diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.c b/subsys/net/lib/lwm2m/lwm2m_engine.c index fc492bb6467..68cc8bdfa0a 100644 --- a/subsys/net/lib/lwm2m/lwm2m_engine.c +++ b/subsys/net/lib/lwm2m/lwm2m_engine.c @@ -2043,7 +2043,7 @@ static int handle_request(struct zoap_packet *request, case ZOAP_METHOD_POST: if (path.level < 2) { /* write/create a object instance */ - context.operation = LWM2M_OP_WRITE; + context.operation = LWM2M_OP_CREATE; } else { context.operation = LWM2M_OP_EXECUTE; } @@ -2123,6 +2123,7 @@ static int handle_request(struct zoap_packet *request, break; case LWM2M_OP_WRITE: + case LWM2M_OP_CREATE: r = do_write_op(obj, &context, format); break; diff --git a/subsys/net/lib/lwm2m/lwm2m_object.h b/subsys/net/lib/lwm2m/lwm2m_object.h index baee4959f74..96d2033e6e0 100644 --- a/subsys/net/lib/lwm2m/lwm2m_object.h +++ b/subsys/net/lib/lwm2m/lwm2m_object.h @@ -62,19 +62,23 @@ #define LWM2M_OP_WRITE 3 #define LWM2M_OP_WRITE_ATTR 4 #define LWM2M_OP_EXECUTE 5 -#define LWM2M_OP_DELETE 6 +#define LWM2M_OP_DELETE 6 +#define LWM2M_OP_CREATE 7 /* operation permission bits */ #define LWM2M_OP_BIT(op) (1 << (op - 1)) /* resource permissions */ #define LWM2M_PERM_R LWM2M_OP_BIT(LWM2M_OP_READ) -#define LWM2M_PERM_W LWM2M_OP_BIT(LWM2M_OP_WRITE) +#define LWM2M_PERM_W (LWM2M_OP_BIT(LWM2M_OP_WRITE) | \ + LWM2M_OP_BIT(LWM2M_OP_CREATE)) #define LWM2M_PERM_X LWM2M_OP_BIT(LWM2M_OP_EXECUTE) #define LWM2M_PERM_RW (LWM2M_OP_BIT(LWM2M_OP_READ) | \ - LWM2M_OP_BIT(LWM2M_OP_WRITE)) + LWM2M_OP_BIT(LWM2M_OP_WRITE) | \ + LWM2M_OP_BIT(LWM2M_OP_CREATE)) #define LWM2M_PERM_RWX (LWM2M_OP_BIT(LWM2M_OP_READ) | \ LWM2M_OP_BIT(LWM2M_OP_WRITE) | \ + LWM2M_OP_BIT(LWM2M_OP_CREATE) | \ LWM2M_OP_BIT(LWM2M_OP_EXECUTE)) /* resource types */