コード例 #1
0
ファイル: settings.c プロジェクト: eerimoq/simba
ssize_t settings_write_by_name(const char *name_p,
                               const void *src_p,
                               size_t size)
{
    ASSERTN(name_p != NULL, EINVAL);
    ASSERTN(src_p != NULL, EINVAL);
    ASSERTN(size > 0, EINVAL);

    const FAR struct setting_t *setting_p;

    /* Find the setting in the settings array. */
    setting_p = &settings[0];

    while (setting_p->name_p != NULL) {
        if (std_strcmp(name_p, setting_p->name_p) == 0) {
            if (size > setting_p->size) {
                return (-1);
            }

            return (settings_write(setting_p->address, src_p, size));
        }

        setting_p++;
    }

    return (-1);
}
コード例 #2
0
/*===========================================================================
FUNCTION  DS707_DATA_SESSION_GET_PROFILE_ID_FOR_SPECIAL_NAI

DESCRIPTION
  This function will return the priority for the special NAI.

DEPENDENCIES
  None.

PARAMETERS
  None.

RETURN VALUE
  int8 - Profile ID
  
SIDE EFFECTS
  None.
===========================================================================*/
int8 ds707_data_session_get_profile_id_for_special_nai()
{
  uint8 i =0;
  int8 app_profile_id = DATA_SESSION_PROFILE_ID_INVALID;

  if( !nvruim_data_3gpd_ext_support() || ( num_valid_nais == 0 ))
  {
    MSG_HIGH("Num valid NAIs is zero",0,0,0);
    return DATA_SESSION_PROFILE_ID_INVALID;
  }
  else
  {
    ds707_data_session_read_legacy_nai();

    for ( i = 0; i < num_valid_nais; i++ )
    {
      if ( std_strcmp( (char*)(special_nai_info[i].nai), (char*)&nai_info) == 0 ) 
      {
        MSG_HIGH("Nai %s matches @index %d",special_nai_info[i].nai,i,0);
        break;
      }
      else
      {
        continue;
      }
    }

    if( i == num_valid_nais)
    {
      MSG_HIGH(" No matching profile found in efs file " ,0,0,0);
      return DATA_SESSION_PROFILE_ID_INVALID;
    }
    else
    {
      app_profile_id = ds_get_app_profile_index(special_nai_info[i].app_type);
      MSG_HIGH("Returning %d as profile ID",app_profile_id,0,0);
      return app_profile_id;
    }
  }
} /* ds707_data_session_get_profile_id_for_special_nai() */
コード例 #3
0
ファイル: settings.c プロジェクト: eerimoq/simba
static int cmd_write_cb(int argc,
                        const char *argv[],
                        void *chout_p,
                        void *chin_p,
                        void *arg_p,
                        void *call_arg_p)
{
    const FAR struct setting_t *setting_p;
    long value;
    int8_t int8;
    int16_t int16;
    int32_t int32;

    if (argc != 3) {
        std_fprintf(chout_p, FSTR("Usage: %s <name> <value>\r\n"), argv[0]);

        return (-1);
    }

    /* Find the setting in the settings array. */
    setting_p = &settings[0];

    while (setting_p->name_p != NULL) {
        if (std_strcmp(argv[1], setting_p->name_p) == 0) {
            switch (setting_p->type) {

            case setting_type_int8_t:
                if (std_strtol(argv[2], &value) == NULL) {
                    return (-1);
                }

                /* Range check. */
                if ((value > 127) || (value < -128)) {
                    std_fprintf(chout_p,
                                FSTR("%ld: value out of range\r\n"),
                                value);
                    return (-1);
                }

                int8 = (int8_t)value;
                settings_write(setting_p->address, &int8, setting_p->size);
                break;

            case setting_type_int16_t:
                if (std_strtol(argv[2], &value) == NULL) {
                    return (-1);
                }

                /* Range check. */
                if ((value > 32767) || (value < -32768)) {
                    std_fprintf(chout_p,
                                FSTR("%ld: value out of range\r\n"),
                                value);
                    return (-1);
                }

                int16 = (int16_t)value;
                settings_write(setting_p->address, &int16, setting_p->size);
                break;

            case setting_type_int32_t:
                if (std_strtol(argv[2], &value) == NULL) {
                    return (-1);
                }

                /* Range check. */
                if ((value > 2147483647) || (value < -2147483648)) {
                    std_fprintf(chout_p,
                                FSTR("%ld: value out of range\r\n"),
                                value);
                    return (-1);
                }

                int32 = (int32_t)value;
                settings_write(setting_p->address, &int32, setting_p->size);
                break;

            case setting_type_string_t:
                /* Range check. */
                if (strlen(argv[2]) >= setting_p->size) {
                    std_fprintf(chout_p,
                                FSTR("%s: string too long\r\n"),
                                argv[2]);
                    return (-1);
                }

                settings_write(setting_p->address, argv[2], setting_p->size);
                break;

            default:
                std_fprintf(chout_p,
                            FSTR("bad setting type %d\r\n"),
                            setting_p->type);
            }

            return (0);
        }

        setting_p++;
    }

    std_fprintf(chout_p, FSTR("%s: setting not found\r\n"), argv[1]);

    return (-1);
}
コード例 #4
0
ファイル: settings.c プロジェクト: eerimoq/simba
static int cmd_read_cb(int argc,
                       const char *argv[],
                       void *chout_p,
                       void *chin_p,
                       void *arg_p,
                       void *call_arg_p)
{
    const FAR struct setting_t *setting_p;
    int i;
    int8_t int8;
    int16_t int16;
    int32_t int32;
    char buf[1];

    if (argc != 2) {
        std_fprintf(chout_p, FSTR("Usage: %s <name>\r\n"), argv[0]);

        return (-1);
    }

    /* Find the setting in the settings array. */
    setting_p = &settings[0];

    while (setting_p->name_p != NULL) {
        if (std_strcmp(argv[1], setting_p->name_p) == 0) {
            switch (setting_p->type) {

            case setting_type_int8_t:
                int8 = 0;
                settings_read(&int8, setting_p->address, setting_p->size);
                std_fprintf(chout_p, FSTR("%d\r\n"), (int)int8);
                break;

            case setting_type_int16_t:
                int16 = 0;
                settings_read(&int16, setting_p->address, setting_p->size);
                std_fprintf(chout_p, FSTR("%d\r\n"), (int)int16);
                break;

            case setting_type_int32_t:
                int32 = 0;
                settings_read(&int32, setting_p->address, setting_p->size);
                std_fprintf(chout_p, FSTR("%ld\r\n"), (long)int32);
                break;

            case setting_type_string_t:
                for (i = 0; i < setting_p->size; i++) {
                    buf[0] = '\0';
                    settings_read(&buf[0], setting_p->address + i, 1);

                    if (buf[0] == '\0') {
                        break;
                    }

                    std_fprintf(chout_p, FSTR("%c"), buf[0]);
                }

                std_fprintf(chout_p, FSTR("\r\n"));
                break;

            default:
                std_fprintf(chout_p,
                            FSTR("bad setting type %d\r\n"),
                            setting_p->type);
            }

            return (0);
        }

        setting_p++;
    }

    std_fprintf(chout_p, FSTR("%s: setting not found\r\n"), argv[1]);

    return (-1);
}