Skip to content

Commit

Permalink
examples/lte_lwm2m: Implement some objects
Browse files Browse the repository at this point in the history
Implement some objects for spresense.

- Digital Input
- Digital Output
- Analog Input
  • Loading branch information
SPRESENSE committed Dec 17, 2021
1 parent 783fdd9 commit fc66159
Show file tree
Hide file tree
Showing 8 changed files with 1,607 additions and 1 deletion.
5 changes: 5 additions & 0 deletions examples/lte_lwm2m/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ CSRCS += lwm2m_lte_connection.c
CSRCS += system_device.c
CSRCS += system_fwupdate.c
CSRCS += system_gnss.c
CSRCS += object_digital_input.c
CSRCS += object_digital_output.c
CSRCS += system_gpio.c
CSRCS += object_analog_input.c
CSRCS += system_adc.c
MAINSRC = lwm2mclient.c

include $(APPDIR)/Application.mk
36 changes: 35 additions & 1 deletion examples/lte_lwm2m/lwm2mclient.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
int g_reboot = 0;
static int g_quit = 0;

#define OBJ_COUNT 9
#define OBJ_COUNT 12
lwm2m_object_t * objArray[OBJ_COUNT];

// only backup security and server objects
Expand Down Expand Up @@ -689,6 +689,15 @@ static void prv_display_objects(lwm2m_context_t * lwm2mH,
break;
case LWM2M_CONN_STATS_OBJECT_ID:
break;
case LWM2M_DIGITAL_INPUT_OBJECT_ID:
display_digital_input_object(object);
break;
case LWM2M_DIGITAL_OUTPUT_OBJECT_ID:
display_digital_output_object(object);
break;
case LWM2M_ANALOG_INPUT_OBJECT_ID:
display_analog_input_object(object);
break;
case TEST_OBJECT_ID:
display_test_object(object);
break;
Expand Down Expand Up @@ -1186,6 +1195,28 @@ int main(int argc, char FAR *argv[])
fprintf(stderr, "Failed to create Access Control ACL resource for serverId: 999\r\n");
return -1;
}

objArray[9] = get_digital_input_object();
if (NULL == objArray[9])
{
fprintf(stderr, "Failed to create digital input object\r\n");
return -1;
}

objArray[10] = get_digital_output_object();
if (NULL == objArray[10])
{
fprintf(stderr, "Failed to create digital output object\r\n");
return -1;
}

objArray[11] = get_analog_input_object();
if (NULL == objArray[11])
{
fprintf(stderr, "Failed to create analog input object\r\n");
return -1;
}

/*
* The liblwm2m library is now initialized with the functions that will be in
* charge of communication
Expand Down Expand Up @@ -1472,6 +1503,9 @@ int main(int argc, char FAR *argv[])
free_object_conn_m(objArray[6]);
free_object_conn_s(objArray[7]);
acl_ctrl_free_object(objArray[8]);
free_digital_input_object(objArray[9]);
free_digital_output_object(objArray[10]);
free_analog_input_object(objArray[11]);

#ifdef LWM2M_MEMORY_TRACE
if (g_quit >= 1)
Expand Down
43 changes: 43 additions & 0 deletions examples/lte_lwm2m/lwm2mclient.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,47 @@ char * get_server_uri(lwm2m_object_t * objectP, uint16_t secObjInstID);
void display_security_object(lwm2m_object_t * objectP);
void copy_security_object(lwm2m_object_t * objectDest, lwm2m_object_t * objectSrc);

/*
* object_digital_input.c
*/
#define LWM2M_DIGITAL_INPUT_OBJECT_ID 3200
lwm2m_object_t * get_digital_input_object(void);
void free_digital_input_object(lwm2m_object_t * objectP);
void display_digital_input_object(lwm2m_object_t * object);
void digital_input_setValue(uint16_t id, bool state);
void digital_input_setCounter(uint16_t id);

/*
* object_digital_output.c
*/
#define LWM2M_DIGITAL_OUTPUT_OBJECT_ID 3201
lwm2m_object_t * get_digital_output_object(void);
void free_digital_output_object(lwm2m_object_t * objectP);
void display_digital_output_object(lwm2m_object_t * object);

/*
* system_gpio.c
*/
int gpio_input_config(uint16_t id, bool polarity);
int gpio_output_config(uint16_t id);
int gpio_read(uint16_t id, bool polarity);
int gpio_interrupt(uint16_t id, int selection);
int gpio_write(uint16_t id, bool state, bool polarity);

/*
* object_analog_input.c
*/
#define LWM2M_ANALOG_INPUT_OBJECT_ID 3202
lwm2m_object_t * get_analog_input_object(void);
void free_analog_input_object(lwm2m_object_t * objectP);
void display_analog_input_object(lwm2m_object_t * object);
void analog_input_setValue(uint16_t id, float value,
float range_min, float range_max);

/*
* system_adc.c
*/
int adc_start(int ch);
int adc_stop(int ch);

#endif /* LWM2MCLIENT_H_ */
Loading

0 comments on commit fc66159

Please sign in to comment.