Skip to content

Instantly share code, notes, and snippets.

@tripflex
Created August 20, 2019 22:44
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save tripflex/526458ecf7dc3c68324d5507dae02497 to your computer and use it in GitHub Desktop.
Mongoose OS Crontab Register Callback in mJS
#include "mgos.h"
#include "mgos_cron.h"
#include "mgos_crontab.h"
struct mgos_cronmanager_mjs_data
{
void (*cb)(const char *, void *);
void *ud;
};
static void mgos_cronmanager_mjs_cb(struct mg_str action, struct mg_str payload, void *userdata)
{
struct mgos_cronmanager_mjs_data *data = (struct mgos_cronmanager_mjs_data *)userdata;
if (data->cb != NULL)
{
data->cb(payload.p, data->ud);
}
else
{
LOG(LL_ERROR, ("CB IS NULL"));
}
}
void mgos_cronmanager_register_handler_mjs(const char *caction, int len, void (*cb)(const char *, void *), void *ud)
{
char *action = calloc(len + 1, sizeof(*action));
struct mgos_cronmanager_mjs_data *data = (struct mgos_cronmanager_mjs_data *)calloc(1, sizeof(*data));
data->cb = (void *)cb;
data->ud = ud;
memcpy(action, caction, len);
mgos_crontab_register_handler(mg_mk_str(action), mgos_cronmanager_mjs_cb, data);
}
let CronManager = {
_reg: ffi('void mgos_cronmanager_register_handler_mjs(char *, int, void(*)(char *,userdata), userdata)'),
reg: function(action, cb, ud){
this._reg(action, action.length, cb, ud);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment