SIM driver question

Andreas Eversberg andreas at eversberg.eu
Fri Jun 15 09:08:43 CEST 2012


eisencah eisenach wrote:
>
> Hi.
> Is there any reason why in the sim_handler()  function,  in
>
>     case SIM_STATE_TX_DATA:
>         if (!txDoneFlag)
>             break; /* wait until data is transmitted */
>         /* Disable all interrupt driven functions */
>         writew(0xFF, REG_SIM_MASKIT);
>         /* Ignore waiting char for RUN GSM ALGORITHM */
>         /* TODO: implement proper handling of the "Procedure Bytes"
>            than this is no longer needed */
>         if(sim_data[1] == 0x88)
>             sim_ignore_waiting_char = 1;
>         sim_state = SIM_STATE_RX_STATUS;
>         calypso_sim_receive(response + length + 1, 2);
>         break;
>
> we do "calypso_sim_receive(response + length + 1, 2);" instead of   
> "calypso_sim_receive(response + 1, 2);".
> Seems an unnecessary overhead sending back some junk chars there. Or 
> I'm missing something?
> Cheers,
> Mihai.
>
hi mihai,

iirc, there is a reason for that. the response is allocated with length 
+ 1 + 2. at the end of the response string, there are the status bytes, 
so "length + 1" is added, so the status will appear at the end of the 
response message. the upper layer always reads the status from the last 
two bytes. if you would remove the length, the status would be at the 
wrong place.

regards,

andreas

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/baseband-devel/attachments/20120615/28d6f0b6/attachment.html>


More information about the baseband-devel mailing list