net: lib: lwm2m: Deprecate buffer set get API
Deprecate old API and make new API using path structs instead of using old string reference based paths. Signed-off-by: Jarno Lämsä <jarno.lamsa@nordicsemi.no>
This commit is contained in:
parent
bca0550413
commit
49cf96858f
2 changed files with 135 additions and 27 deletions
|
@ -1667,6 +1667,8 @@ int lwm2m_register_delete_callback(uint16_t obj_id,
|
|||
/**
|
||||
* @brief Set data buffer for a resource
|
||||
*
|
||||
* @deprecated Use lwm2m_set_res_buf() instead.
|
||||
*
|
||||
* Use this function to set the data buffer and flags for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
|
@ -1678,6 +1680,7 @@ int lwm2m_register_delete_callback(uint16_t obj_id,
|
|||
*
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
__deprecated
|
||||
int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len,
|
||||
uint16_t data_len, uint8_t data_flags);
|
||||
|
||||
|
@ -1687,7 +1690,24 @@ int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buf
|
|||
* Use this function to set the data buffer and flags for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
* @deprecated Use lwm2m_engine_set_res_buf() instead, so you can define buffer size and data size
|
||||
* @param[in] path LwM2M path as a struct
|
||||
* @param[in] buffer_ptr Data buffer pointer
|
||||
* @param[in] buffer_len Length of buffer
|
||||
* @param[in] data_len Length of existing data in the buffer
|
||||
* @param[in] data_flags Data buffer flags (such as read-only, etc)
|
||||
*
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len,
|
||||
uint16_t data_len, uint8_t data_flags);
|
||||
|
||||
/**
|
||||
* @brief Set data buffer for a resource
|
||||
*
|
||||
* Use this function to set the data buffer and flags for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
* @deprecated Use lwm2m_set_res_buf() instead, so you can define buffer size and data size
|
||||
* separately.
|
||||
*
|
||||
* @param[in] pathstr LwM2M path string "obj/obj-inst/res(/res-inst)"
|
||||
|
@ -1704,6 +1724,8 @@ int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data
|
|||
/**
|
||||
* @brief Update data size for a resource
|
||||
*
|
||||
* @deprecated Use lwm2m_set_res_data_len() instead.
|
||||
*
|
||||
* Use this function to set the new size of data in the buffer if you write
|
||||
* to a buffer received by lwm2m_engine_get_res_buf().
|
||||
*
|
||||
|
@ -1711,11 +1733,26 @@ int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data
|
|||
* @param[in] data_len Length of data
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
__deprecated
|
||||
int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len);
|
||||
|
||||
/**
|
||||
* @brief Update data size for a resource
|
||||
*
|
||||
* Use this function to set the new size of data in the buffer if you write
|
||||
* to a buffer received by lwm2m_engine_get_res_buf().
|
||||
*
|
||||
* @param[in] path LwM2M path as a struct
|
||||
* @param[in] data_len Length of data
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len);
|
||||
|
||||
/**
|
||||
* @brief Get data buffer for a resource
|
||||
*
|
||||
* @deprecated Use lwm2m_get_res_buf() instead.
|
||||
*
|
||||
* Use this function to get the data buffer information for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
|
@ -1732,6 +1769,7 @@ int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len);
|
|||
*
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
__deprecated
|
||||
int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len,
|
||||
uint16_t *data_len, uint8_t *data_flags);
|
||||
|
||||
|
@ -1741,7 +1779,29 @@ int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *b
|
|||
* Use this function to get the data buffer information for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
* @deprecated Use lwm2m_engine_get_res_buf() as it can tell you the size of the buffer as well.
|
||||
* If you directly write into the buffer, you must use lwm2m_set_res_data_len()
|
||||
* function to update the new size of the written data.
|
||||
*
|
||||
* All parameters, except for the pathstr, can be NULL if you don't want to read those values.
|
||||
*
|
||||
* @param[in] path LwM2M path as a struct
|
||||
* @param[out] buffer_ptr Data buffer pointer
|
||||
* @param[out] buffer_len Length of buffer
|
||||
* @param[out] data_len Length of existing data in the buffer
|
||||
* @param[out] data_flags Data buffer flags (such as read-only, etc)
|
||||
*
|
||||
* @return 0 for success or negative in case of error.
|
||||
*/
|
||||
int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len,
|
||||
uint16_t *data_len, uint8_t *data_flags);
|
||||
|
||||
/**
|
||||
* @brief Get data buffer for a resource
|
||||
*
|
||||
* Use this function to get the data buffer information for the specified LwM2M
|
||||
* resource.
|
||||
*
|
||||
* @deprecated Use lwm2m_get_res_buf() as it can tell you the size of the buffer as well.
|
||||
*
|
||||
* @param[in] pathstr LwM2M path string "obj/obj-inst/res(/res-inst)"
|
||||
* @param[out] data_ptr Data buffer pointer
|
||||
|
|
|
@ -439,34 +439,27 @@ int path_to_objs(const struct lwm2m_obj_path *path, struct lwm2m_engine_obj_inst
|
|||
}
|
||||
/* User data setter functions */
|
||||
|
||||
int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len,
|
||||
int lwm2m_set_res_buf(const struct lwm2m_obj_path *path, void *buffer_ptr, uint16_t buffer_len,
|
||||
uint16_t data_len, uint8_t data_flags)
|
||||
{
|
||||
struct lwm2m_obj_path path;
|
||||
int ret;
|
||||
struct lwm2m_engine_res_inst *res_inst = NULL;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
ret = lwm2m_string_to_path(pathstr, &path, '/');
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (path.level < LWM2M_PATH_LEVEL_RESOURCE) {
|
||||
if (path->level < LWM2M_PATH_LEVEL_RESOURCE) {
|
||||
LOG_ERR("path must have at least 3 parts");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
k_mutex_lock(®istry_lock, K_FOREVER);
|
||||
/* look up resource obj */
|
||||
ret = path_to_objs(&path, NULL, NULL, NULL, &res_inst);
|
||||
ret = path_to_objs(path, NULL, NULL, NULL, &res_inst);
|
||||
if (ret < 0) {
|
||||
k_mutex_unlock(®istry_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!res_inst) {
|
||||
LOG_ERR("res instance %d not found", path.res_inst_id);
|
||||
LOG_ERR("res instance %d not found", path->res_inst_id);
|
||||
k_mutex_unlock(®istry_lock);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
@ -481,10 +474,34 @@ int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buf
|
|||
return ret;
|
||||
}
|
||||
|
||||
int lwm2m_engine_set_res_buf(const char *pathstr, void *buffer_ptr, uint16_t buffer_len,
|
||||
uint16_t data_len, uint8_t data_flags)
|
||||
{
|
||||
struct lwm2m_obj_path path;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
ret = lwm2m_string_to_path(pathstr, &path, '/');
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return lwm2m_set_res_buf(&path, buffer_ptr, buffer_len, data_len, data_flags);
|
||||
}
|
||||
|
||||
int lwm2m_engine_set_res_data(const char *pathstr, void *data_ptr, uint16_t data_len,
|
||||
uint8_t data_flags)
|
||||
{
|
||||
return lwm2m_engine_set_res_buf(pathstr, data_ptr, data_len, data_len, data_flags);
|
||||
struct lwm2m_obj_path path;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
ret = lwm2m_string_to_path(pathstr, &path, '/');
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return lwm2m_set_res_buf(&path, data_ptr, data_len, data_len, data_flags);
|
||||
}
|
||||
|
||||
static bool lwm2m_validate_time_resource_lenghts(uint16_t resource_length, uint16_t buf_length)
|
||||
|
@ -959,7 +976,7 @@ int lwm2m_engine_set_time(const char *pathstr, time_t value)
|
|||
return lwm2m_set_time(&path, value);
|
||||
}
|
||||
|
||||
int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len)
|
||||
int lwm2m_set_res_data_len(const struct lwm2m_obj_path *path, uint16_t data_len)
|
||||
{
|
||||
int ret;
|
||||
void *buffer_ptr;
|
||||
|
@ -967,19 +984,16 @@ int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len)
|
|||
uint16_t old_len;
|
||||
uint8_t data_flags;
|
||||
|
||||
ret = lwm2m_engine_get_res_buf(pathstr, &buffer_ptr, &buffer_len, &old_len, &data_flags);
|
||||
ret = lwm2m_get_res_buf(path, &buffer_ptr, &buffer_len, &old_len, &data_flags);
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
return lwm2m_engine_set_res_buf(pathstr, buffer_ptr, buffer_len, data_len, data_flags);
|
||||
return lwm2m_set_res_buf(path, buffer_ptr, buffer_len, data_len, data_flags);
|
||||
}
|
||||
/* User data getter functions */
|
||||
|
||||
int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len,
|
||||
uint16_t *data_len, uint8_t *data_flags)
|
||||
int lwm2m_engine_set_res_data_len(const char *pathstr, uint16_t data_len)
|
||||
{
|
||||
struct lwm2m_obj_path path;
|
||||
struct lwm2m_engine_res_inst *res_inst = NULL;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
|
@ -988,21 +1002,31 @@ int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *b
|
|||
return ret;
|
||||
}
|
||||
|
||||
if (path.level < LWM2M_PATH_LEVEL_RESOURCE) {
|
||||
return lwm2m_set_res_data_len(&path, data_len);
|
||||
}
|
||||
/* User data getter functions */
|
||||
|
||||
int lwm2m_get_res_buf(const struct lwm2m_obj_path *path, void **buffer_ptr, uint16_t *buffer_len,
|
||||
uint16_t *data_len, uint8_t *data_flags)
|
||||
{
|
||||
int ret;
|
||||
struct lwm2m_engine_res_inst *res_inst = NULL;
|
||||
|
||||
if (path->level < LWM2M_PATH_LEVEL_RESOURCE) {
|
||||
LOG_ERR("path must have at least 3 parts");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
k_mutex_lock(®istry_lock, K_FOREVER);
|
||||
/* look up resource obj */
|
||||
ret = path_to_objs(&path, NULL, NULL, NULL, &res_inst);
|
||||
ret = path_to_objs(path, NULL, NULL, NULL, &res_inst);
|
||||
if (ret < 0) {
|
||||
k_mutex_unlock(®istry_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!res_inst) {
|
||||
LOG_ERR("res instance %d not found", path.res_inst_id);
|
||||
LOG_ERR("res instance %d not found", path->res_inst_id);
|
||||
k_mutex_unlock(®istry_lock);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
@ -1024,10 +1048,34 @@ int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *b
|
|||
return 0;
|
||||
}
|
||||
|
||||
int lwm2m_engine_get_res_buf(const char *pathstr, void **buffer_ptr, uint16_t *buffer_len,
|
||||
uint16_t *data_len, uint8_t *data_flags)
|
||||
{
|
||||
struct lwm2m_obj_path path;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
ret = lwm2m_string_to_path(pathstr, &path, '/');
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return lwm2m_get_res_buf(&path, buffer_ptr, buffer_len, data_len, data_flags);
|
||||
}
|
||||
|
||||
int lwm2m_engine_get_res_data(const char *pathstr, void **data_ptr, uint16_t *data_len,
|
||||
uint8_t *data_flags)
|
||||
{
|
||||
return lwm2m_engine_get_res_buf(pathstr, data_ptr, NULL, data_len, data_flags);
|
||||
struct lwm2m_obj_path path;
|
||||
int ret = 0;
|
||||
|
||||
/* translate path -> path_obj */
|
||||
ret = lwm2m_string_to_path(pathstr, &path, '/');
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return lwm2m_get_res_buf(&path, data_ptr, NULL, data_len, data_flags);
|
||||
}
|
||||
|
||||
static int lwm2m_engine_get(const struct lwm2m_obj_path *path, void *buf, uint16_t buflen)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue