Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/iwasm/lib/app-libs/base/request.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ static void transaction_remove(transaction_t *trans)
}
}

bool is_event_type(request_t * req)
static bool is_event_type(request_t * req)
{
return req->action == COAP_EVENT;
}
Expand Down
98 changes: 92 additions & 6 deletions core/iwasm/lib/app-libs/base/request.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,108 @@
extern "C" {
#endif

bool is_event_type(request_t * req);
/**
* @typedef request_handler_f
*
* @brief Define the signature of callback function for API
* api_register_resource_handler() to handle request or for API
* api_subscribe_event() to handle event.
*
* @param request pointer of the request to be handled
*
* @see api_register_resource_handler
* @see api_subscribe_event
*/
typedef void (*request_handler_f)(request_t *request);

/**
* @typedef response_handler_f
*
* @brief Define the signature of callback function for API
* api_send_request() to handle response of a request.
*
* @param response pointer of the response to be handled
* @param user_data user data associated with the request which is set when
* calling api_send_request().
*
* @see api_send_request
*/
typedef void (*response_handler_f)(response_t *response, void *user_data);


/*
*****************
* Request APIs
*****************
*/

typedef void (*request_handler_f)(request_t *);
typedef void (*response_handler_f)(response_t *, void *);
/**
* @brief Register resource.
*
* @param url url of the resource
* @param handler callback function to handle the request to the resource
*
* @return true if success, false otherwise
*/
bool api_register_resource_handler(const char *url, request_handler_f handler);

// Request APIs
bool api_register_resource_handler(const char *url, request_handler_f);
/**
* @brief Send request asynchronously.
*
* @param request pointer of the request to be sent
* @param response_handler callback function to handle the response
* @param user_data user data
*/
void api_send_request(request_t * request, response_handler_f response_handler,
void * user_data);

/**
* @brief Send response.
*
* @param response pointer of the response to be sent
*
* @par
* @code
* void res1_handler(request_t *request)
* {
* response_t response[1];
* make_response_for_request(request, response);
* set_response(response, DELETED_2_02, 0, NULL, 0);
* api_response_send(response);
* }
* @endcode
*/
void api_response_send(response_t *response);

// event API

/*
*****************
* Event APIs
*****************
*/

/**
* @brief Publish an event.
*
* @param url url of the event
* @param fmt format of the event payload
* @param payload payload of the event
* @param payload_len length in bytes of the event payload
*
* @return true if success, false otherwise
*/
bool api_publish_event(const char *url, int fmt, void *payload,
int payload_len);


/**
* @brief Subscribe an event.
*
* @param url url of the event
* @param handler callback function to handle the event.
*
* @return true if success, false otherwise
*/
bool api_subscribe_event(const char * url, request_handler_f handler);

#ifdef __cplusplus
Expand Down
2 changes: 1 addition & 1 deletion core/iwasm/lib/app-libs/base/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct user_timer {
struct user_timer * g_timers = NULL;

user_timer_t api_timer_create(int interval, bool is_period, bool auto_start,
void (*on_timer_update)(user_timer_t))
on_user_timer_update_f on_timer_update)
{

int timer_id = wasm_create_timer(interval, is_period, auto_start);
Expand Down
46 changes: 41 additions & 5 deletions core/iwasm/lib/app-libs/base/timer_wasm_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,53 @@
extern "C" {
#endif

//TODO:
#define bh_queue_t void

/* board producer define user_timer */
struct user_timer;
typedef struct user_timer * user_timer_t;

// Timer APIs
/**
* @typedef on_user_timer_update_f
*
* @brief Define the signature of callback function for API api_timer_create().
*
* @param timer the timer
*
* @see api_timer_create
*/
typedef void (*on_user_timer_update_f)(user_timer_t timer);

/*
*****************
* Timer APIs
*****************
*/

/**
* @brief Create timer.
*
* @param interval timer interval
* @param is_period whether the timer is periodic
* @param auto_start whether start the timer immediately after created
* @param on_timer_update callback function called when timer expired
*
* @return the timer created if success, NULL otherwise
*/
user_timer_t api_timer_create(int interval, bool is_period, bool auto_start,
void (*on_user_timer_update)(user_timer_t));
on_user_timer_update_f on_timer_update);

/**
* @brief Cancel timer.
*
* @param timer the timer to cancel
*/
void api_timer_cancel(user_timer_t timer);

/**
* @brief Restart timer.
*
* @param timer the timer to cancel
* @param interval the timer interval
*/
void api_timer_restart(user_timer_t timer, int interval);

#ifdef __cplusplus
Expand Down
13 changes: 4 additions & 9 deletions core/iwasm/lib/app-libs/extension/sensor/sensor.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ typedef struct _sensor {
static sensor_t g_sensors = NULL;

sensor_t sensor_open(const char* name, int index,
void (*sensor_event_handler)(sensor_t, attr_container_t *, void *),
sensor_event_handler_f sensor_event_handler,
void *user_data)
{
uint32 id = wasm_sensor_open(name, index);
Expand Down Expand Up @@ -63,12 +63,10 @@ sensor_t sensor_open(const char* name, int index,

bool sensor_config_with_attr_container(sensor_t sensor, attr_container_t *cfg)
{
char * buffer;
int len;
char *buffer = (char *)cfg;
int len = attr_container_get_serialize_length(cfg);

bool ret = wasm_sensor_config_with_attr_container(sensor->handle, buffer,
len);
return ret;
return wasm_sensor_config_with_attr_container(sensor->handle, buffer, len);
}

bool sensor_config(sensor_t sensor, int interval, int bit_cfg, int delay)
Expand All @@ -79,7 +77,6 @@ bool sensor_config(sensor_t sensor, int interval, int bit_cfg, int delay)

bool sensor_close(sensor_t sensor)
{

wasm_sensor_close(sensor->handle);

// remove local node
Expand Down Expand Up @@ -114,8 +111,6 @@ void on_sensor_event(uint32 sensor_id, char * buffer, int len)
{
attr_container_t * sensor_data = (attr_container_t *) buffer;

// ??? use buffer or the attributs struct?

// lookup the sensor and call the handlers
sensor_t s = g_sensors;
sensor_t prev = NULL;
Expand Down
72 changes: 65 additions & 7 deletions core/iwasm/lib/app-libs/extension/sensor/sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,77 @@
extern "C" {
#endif

//TODO:
#define bh_queue_t void

/* board producer define sensor */
struct _sensor;
typedef struct _sensor *sensor_t;

// Sensor APIs
sensor_t sensor_open(const char* name, int index,
void (*on_sensor_event)(sensor_t, attr_container_t *, void *),
void *user_data);
/**
* @typedef sensor_event_handler_f
*
* @brief Define the signature of callback function for API
* sensor_open() to handle sensor event.
*
* @param sensor the sensor which the event belong to
* @param sensor_event the sensor event
* @param user_data user data associated with the sensor which is set when
* calling sensor_open().
*
* @see sensor_open
*/
typedef void (*sensor_event_handler_f)(sensor_t sensor,
attr_container_t *sensor_event,
void *user_data);

/*
*****************
* Sensor APIs
*****************
*/

/**
* @brief Open sensor.
*
* @param name sensor name
* @param index sensor index
* @param handler callback function to handle the sensor event
* @param user_data user data
*
* @return the sensor opened if success, NULL otherwise
*/
sensor_t sensor_open(const char* name,
int index,
sensor_event_handler_f handler,
void *user_data);

/**
* @brief Configure sensor with interval/bit_cfg/delay values.
*
* @param sensor the sensor to be configured
* @param interval sensor event interval
* @param bit_cfg sensor bit config
* @param delay sensor delay
*
* @return true if success, false otherwise
*/
bool sensor_config(sensor_t sensor, int interval, int bit_cfg, int delay);

/**
* @brief Configure sensor with attr_container_t object.
*
* @param sensor the sensor to be configured
* @param cfg the configuration
*
* @return true if success, false otherwise
*/
bool sensor_config_with_attr_container(sensor_t sensor, attr_container_t *cfg);

/**
* @brief Close sensor.
*
* @param sensor the sensor to be closed
*
* @return true if success, false otherwise
*/
bool sensor_close(sensor_t sensor);

#ifdef __cplusplus
Expand Down
Loading