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); }
/*=========================================================================== 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() */
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); }
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); }