static uint8_t prv_read(uint16_t instanceId, int * numDataP, lwm2m_data_t ** dataArrayP, lwm2m_object_t * objectP) { uint8_t result; int i; // this is a single instance object if (instanceId != 0) { return COAP_404_NOT_FOUND ; } // is the server asking for the full object ? if (*numDataP == 0) { uint16_t resList[] = { RES_M_NETWORK_BEARER, RES_M_AVL_NETWORK_BEARER, RES_M_RADIO_SIGNAL_STRENGTH, RES_O_LINK_QUALITY, RES_M_IP_ADDRESSES, RES_O_ROUTER_IP_ADDRESS, RES_O_LINK_UTILIZATION, RES_O_APN, RES_O_CELL_ID, RES_O_SMNC, RES_O_SMCC }; int nbRes = sizeof(resList) / sizeof(uint16_t); *dataArrayP = lwm2m_data_new(nbRes); if (*dataArrayP == NULL) return COAP_500_INTERNAL_SERVER_ERROR ; *numDataP = nbRes; for (i = 0; i < nbRes; i++) { (*dataArrayP)[i].id = resList[i]; } } i = 0; do { result = prv_set_value((*dataArrayP) + i, (conn_m_data_t*) (objectP->userData)); i++; } while (i < *numDataP && result == COAP_205_CONTENT ); return result; }
static uint8_t prv_device_read(uint16_t instanceId, int * numDataP, lwm2m_data_t ** dataArrayP, lwm2m_object_t * objectP) { uint8_t result; int i; // this is a single instance object if (instanceId != 0) { return COAP_404_NOT_FOUND; } // is the server asking for the full object ? if (*numDataP == 0) { uint16_t resList[] = { RES_O_MANUFACTURER, RES_O_MODEL_NUMBER, RES_M_BINDING_MODES }; int nbRes = sizeof(resList)/sizeof(uint16_t); *dataArrayP = lwm2m_data_new(nbRes); if (*dataArrayP == NULL) return COAP_500_INTERNAL_SERVER_ERROR; *numDataP = nbRes; for (i = 0 ; i < nbRes ; i++) { (*dataArrayP)[i].id = resList[i]; } } i = 0; do { result = prv_set_value((*dataArrayP) + i); i++; } while (i < *numDataP && result == COAP_205_CONTENT); return result; }
static uint8_t prv_accelerometer_read(uint16_t instanceId, int * numDataP, lwm2m_tlv_t ** dataArrayP, lwm2m_object_t * objectP) { uint8_t result; int i; // this is a single instance object if (instanceId != 0) { return COAP_404_NOT_FOUND ; } // is the server asking for the full object ? if (*numDataP == 0) { uint16_t resList[] = { RES_MIN_RANGE_VALUE, RES_MAX_RANCE_VALUE, RES_SENSOR_UNITS, RES_X_VALUE, RES_Y_VALUE, RES_Z_VALUE }; int nbRes = sizeof(resList) / sizeof(uint16_t); *dataArrayP = lwm2m_tlv_new(nbRes); if (*dataArrayP == NULL) return COAP_500_INTERNAL_SERVER_ERROR ; *numDataP = nbRes; for (i = 0; i < nbRes; i++) { (*dataArrayP)[i].id = resList[i]; } } i = 0; do { result = prv_set_value((*dataArrayP) + i, (accelometer_data_t*) (objectP->userData)); i++; } while (i < *numDataP && result == COAP_205_CONTENT ); return result; }
static uint8_t prv_device_read(uint16_t instanceId, int * numDataP, lwm2m_tlv_t ** dataArrayP, lwm2m_object_t * objectP) { uint8_t result; int i; // this is a single instance object if (instanceId != 0) { return COAP_404_NOT_FOUND; } // is the server asking for the full object ? if (*numDataP == 0) { uint16_t resList[] = {0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13, 14, 15}; int nbRes = sizeof(resList)/sizeof(uint16_t); *dataArrayP = lwm2m_tlv_new(nbRes); if (*dataArrayP == NULL) return COAP_500_INTERNAL_SERVER_ERROR; *numDataP = nbRes; for (i = 0 ; i < nbRes ; i++) { (*dataArrayP)[i].id = resList[i]; } } i = 0; do { result = prv_set_value((*dataArrayP) + i, (device_data_t*)(objectP->userData)); i++; } while (i < *numDataP && result == COAP_205_CONTENT); return result; }