CONN_SETTINGS_GENERAL | Generic connectivity settings from /system/osso/connectivity |
CONN_SETTINGS_NETWORK_TYPE | Network type settings from /system/osso/connectivity/network_type, the id is the network type like WLAN or GPRS |
CONN_SETTINGS_CONNECTION | Connection settings from /system/osso/connectivity/IAP, the id is the IAP id |
CONN_SETTINGS_SERVICE_TYPE | Service type settings from /system/osso/connectivity/srv_provider, the id is the provider identifier |
Example of usage:
Return IAP ids
char **ids; int i;
ids = conn_settings_list_ids(CONN_SETTINGS_CONNECTION); if (ids) { for (i=0; ids[i]!=NULL; i++) { printf("IAP: %s\n", ids[i]); free(ids[i]); } free(ids); }
Check if given IAP exists
if (conn_settings_id_exists(CONN_SETTINGS_CONNECTION, "known-IAP")) printf("IAP exists\n"); else printf("IAP is not found\n");
Return keys for a IAP id 89ebd4e9-2e86-4fda-bd15-1cdcd98e581e
ConnSettings *ctx; char **keys; int i;
ctx = conn_settings_open(CONN_SETTINGS_CONNECTION, "89ebd4e9-2e86-4fda-bd15-1cdcd98e581e"); keys = conn_settings_list_keys(ctx); if (keys) { for (i=0; keys[i]!=NULL; i++) { printf("%s\n", keys[i]); free(keys[i]); } free(keys); } conn_settings_close(ctx);
Return GPRS RX byte count
ConnSettings *ctx; ConnSettingsValue *value; int count = 0, ret;
ctx = conn_settings_open(CONN_SETTINGS_NETWORK_TYPE, "GPRS"); value = conn_settings_get(ctx, "gprs_rx_bytes"); if (value && value->type == CONN_SETTINGS_VALUE_INT) printf("GPRS RX byte count = %d\n", value->value.int_val); conn_settings_value_destroy(value);
// or the count can be fetched using other function ret = conn_settings_get_int(ctx, "gprs_rx_bytes", &count); if (!ret) printf("GPRS RX byte count = %d\n", count);
conn_settings_close(ctx);
Return WLAN ssid
ConnSettings *ctx; int ret; unsigned char *ssid = 0; unsigned int len = 0;
ctx = conn_settings_open(CONN_SETTINGS_CONNECTION, "89ebd4e9-2e86-4fda-bd15-1cdcd98e581e"); ret = conn_settings_get_byte_array(ctx, "wlan_ssid", &ssid, &len); if (ret == CONN_SETTINGS_E_NO_ERROR) { int i; if (len>0) { printf("wlan_ssid: "); for (i=0; i<len; i++) printf("%c", ssid[i]); printf("\n"); free(ssid); } } conn_settings_close(ctx);
Remove IAP
ConnSettings *ctx; int ret;
ctx = conn_settings_open(CONN_SETTINGS_CONNECTION, "89ebd4e9-2e86-4fda-bd15-1cdcd98e581e"); ret = conn_settings_remove(ctx); if (ret != CONN_SETTINGS_E_NO_ERROR) printf("Cannot remove IAP\n");
conn_settings_close(ctx);
Set/get empty list
ConnSettings *ctx; int ret; ConnSettingsValue **value = NULL;
ctx = conn_settings_open(CONN_SETTINGS_CONNECTION, "89ebd4e9-2e86-4fda-bd15-1cdcd98e581e"); ret = conn_settings_set_list(ctx, "empty_list", NULL, 0, CONN_SETTINGS_VALUE_INT); if (ret != CONN_SETTINGS_E_NO_ERROR) printf("Cannot set empty list\n"); else { ret = conn_settings_get_list(ctx, "empty_list", &value); if (ret != CONN_SETTINGS_E_NO_ERROR) printf("Cannot get empty list\n"); else if (*value == NULL) printf("List is empty\n"); }
conn_settings_close(ctx);
Set/get int list using various API functions
ConnSettings *ctx; int ret, i; int int_list[] = { 'T','E','S','T' }; int len = sizeof(int_list) / sizeof(int); ConnSettingsValue **value = NULL, *new_value;
ctx = conn_settings_open(CONN_SETTINGS_CONNECTION, "89ebd4e9-2e86-4fda-bd15-1cdcd98e581e"); ret = conn_settings_set_list(ctx, "int_list", int_list, len, CONN_SETTINGS_VALUE_INT); if (ret != CONN_SETTINGS_E_NO_ERROR) printf("Cannot set list\n"); else { ret = conn_settings_get_list(ctx, "int_list", &value); if (ret != CONN_SETTINGS_E_NO_ERROR) printf("Cannot get empty list\n"); else if (*value == NULL) printf("List is empty\n"); else if ((*value)->type != CONN_SETTINGS_VALUE_INT) printf("Invalid list type\n"); else { for (i=0; value[i]!=NULL; i++) { printf("[%d] = %c (%d)\n", i, value[i]->value.int_val, value[i]->value.int_val); }
// change the list and put it back value[0]->value.int_val = 82; printf("\n"); new_value = conn_settings_value_new(); new_value->type = CONN_SETTINGS_VALUE_LIST; new_value->value.list_val = value;
ret = conn_settings_set(ctx, "int_list", new_value);
// this also clears the list values conn_settings_value_destroy(new_value);
if (ret == CONN_SETTINGS_E_NO_ERROR) { ret = conn_settings_get_list(ctx, "int_list", &value); for (i=0; value[i]!=NULL; i++) { printf("[%d] = %c (%d)\n", i, value[i]->value.int_val, value[i]->value.int_val); }
conn_settings_values_destroy(value); } } }
conn_settings_close(ctx);