Hi Petteri,

On 10/12/2010 10:18 AM, Petteri Tikander wrote:
> ---
>  src/simutil.c |    5 ++++-
>  src/simutil.h |   11 ++++++++++-
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/src/simutil.c b/src/simutil.c
> index 65ce1ac..04ba975 100644
> --- a/src/simutil.c
> +++ b/src/simutil.c
> @@ -1405,7 +1405,8 @@ gboolean sim_parse_3g_get_response(const unsigned char 
> *data, int len,
>  
>  gboolean sim_parse_2g_get_response(const unsigned char *response, int len,
>                                       int *file_len, int *record_len,
> -                                     int *structure, unsigned char *access)
> +                                     int *structure, unsigned char *access,
> +                                     unsigned char *file_status)
>  {
>       if (len < 14 || response[6] != 0x04)
>               return FALSE;
> @@ -1420,6 +1421,8 @@ gboolean sim_parse_2g_get_response(const unsigned char 
> *response, int len,
>       access[1] = response[9];
>       access[2] = response[10];
>  
> +     *file_status = response[11];
> +
>       if (response[13] == 0x01 || response[13] == 0x03)
>               *record_len = response[14];
>       else

This looks fine.

> diff --git a/src/simutil.h b/src/simutil.h
> index 54b99a0..bd8e4ac 100644
> --- a/src/simutil.h
> +++ b/src/simutil.h
> @@ -57,6 +57,14 @@ enum sim_file_access {
>       SIM_FILE_ACCESS_NEVER = 15,
>  };
>  
> +/* 51.011 Section 9.3 */
> +enum sim_file_status {
> +     SIM_FILE_STATUS_INVALID                 = 0x00,
> +     SIM_FILE_STATUS_NOT_INVALID             = 0x01,
> +     SIM_FILE_STATUS_INVALID_BUT_ACCESS      = 0x04,
> +     SIM_FILE_STATUS_NOT_AVAILABLE           = 0xFF,
> +};
> +

I don't like this, you should structure this enum as a set of status flags.

E.g. SIM_FILE_STATUS_VALID = 0x01, SIM_FILE_STATUS_RW_WHEN_INVALID = 0x04

I don't see the need for the NOT_AVAILABLE enum since you will never
check this status in the 3G case.  Passing 0 here is fine.  But feel
free to correct me if I'm wrong.

>  /* 131.102 Section 4.2.8 */
>  enum sim_ust_service {
>       SIM_UST_SERVICE_LOCAL_PHONE_BOOK                = 0,
> @@ -425,7 +433,8 @@ gboolean sim_parse_3g_get_response(const unsigned char 
> *data, int len,
>  
>  gboolean sim_parse_2g_get_response(const unsigned char *response, int len,
>                                       int *file_len, int *record_len,
> -                                     int *structure, unsigned char *access);
> +                                     int *structure, unsigned char *access,
> +                                     unsigned char *file_status);
>  
>  gboolean sim_ust_is_available(unsigned char *service_ust, unsigned char len,
>                                               enum sim_ust_service index);

Regards,
-Denis
_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to