| 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);
 1.5.6
 1.5.6