Hi Denis,

> Hi Petteri,
> 
> On 10/12/2010 10:18 AM, Petteri Tikander wrote:
> > ---
> >  drivers/atmodem/sim.c |   24 ++++++++++++++++--------
> >  1 files changed, 16 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c
> > index d0a7148..d44b7d2 100644
> > --- a/drivers/atmodem/sim.c
> > +++ b/drivers/atmodem/sim.c
> > @@ -64,11 +64,13 @@ static void at_crsm_info_cb(gboolean ok, GAtResult
> > *result, gpointer user_data) int flen, rlen;
> >     int str;
> >     unsigned char access[3];
> > +   unsigned char file_status;
> >
> >     decode_at_error(&error, g_at_result_final_response(result));
> >
> >     if (!ok) {
> > -           cb(&error, -1, -1, -1, NULL, cbd->data);
> > +           cb(&error, -1, -1, -1, NULL,
> > +                   SIM_FILE_STATUS_NOT_AVAILABLE, cbd->data);
> 
> In the cases where an error occurs, I suggest passing in -1 for the
> file_status.

What about passing in 0 (INVALID)? Because I handle file_status as an 
bit-field, 
unsigned char-type seems to be proper type for file_status, not signed-type 
(for negative values).

> 
> >             return;
> >     }
> >
> > @@ -88,27 +90,33 @@ static void at_crsm_info_cb(gboolean ok, GAtResult
> > *result, gpointer user_data) error.type = OFONO_ERROR_TYPE_SIM;
> >             error.error = (sw1 << 8) | sw2;
> >
> > -           cb(&error, -1, -1, -1, NULL, cbd->data);
> > +           cb(&error, -1, -1, -1, NULL,
> > +                   SIM_FILE_STATUS_NOT_AVAILABLE, cbd->data);
> >             return;
> >     }
> >
> >     DBG("crsm_info_cb: %02x, %02x, %i", sw1, sw2, len);
> >
> > -   if (response[0] == 0x62)
> > +   if (response[0] == 0x62) {
> >             ok = sim_parse_3g_get_response(response, len, &flen, &rlen,
> >                                             &str, access, NULL);
> > +
> > +           file_status = SIM_FILE_STATUS_NOT_AVAILABLE;
> 
> For this case, file_status should be 0.  From what I remember of ETSI
> 102.221 3G sims do not return response data for invalidated files.  But
> please double check this, or perhaps someone on the list knows.
> 

I didn't find file-status in the 3G-response encoding either. Well, status byte-
coding gives similar return-value ('Selected file invalidated'). OK, for FDN-
support I need to check the ADN-file status only from 2G-response. But later 
this issue can be implemented more properly.

> > +   }
> >     else
> >             ok = sim_parse_2g_get_response(response, len, &flen, &rlen,
> > -                                           &str, access);
> > +                                           &str, access, &file_status);
> >
> >     if (!ok)
> >             goto error;
> >
> > -   cb(&error, flen, str, rlen, access, cbd->data);
> > +   cb(&error, flen, str, rlen, access, file_status, cbd->data);
> > +
> >     return;
> >
> >  error:
> > -   CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, cbd->data);
> > +   CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL,
> > +                           SIM_FILE_STATUS_NOT_AVAILABLE, cbd->data);
> >  }
> >
> >  static void at_sim_read_info(struct ofono_sim *sim, int fileid,
> > @@ -123,7 +131,7 @@ static void at_sim_read_info(struct ofono_sim *sim,
> > int fileid, unsigned char access[3] = { 0x00, 0x00, 0x00 };
> >
> >             if (fileid == SIM_EFAD_FILEID) {
> > -                   CALLBACK_WITH_SUCCESS(cb, 4, 0, 0, access, data);
> > +                   CALLBACK_WITH_SUCCESS(cb, 4, 0, 0, access, 0x01, data);
> >                     return;
> >             }
> >     }
> > @@ -142,7 +150,7 @@ static void at_sim_read_info(struct ofono_sim *sim,
> > int fileid, return;
> >
> >  error:
> > -   CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, data);
> > +   CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, 0xFF, data);
> >
> >  }
> >
> >  static void at_crsm_read_cb(gboolean ok, GAtResult *result,
> 
> Regards,
> -Denis
> 

Br, Petteri

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to