Created
September 3, 2013 07:10
-
-
Save guo-yu/6420572 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "include.h" | |
/* | |
{ | |
"method":"helloworld.onoff", | |
"params":"on"/"off" | |
} | |
*/ | |
//非常典型的一个“委托接口”函数,可以被外部程序通过 json rpc 方式调用 | |
int JSON_RPC(onoff)(jsmn_node_t* pjn, fp_json_delegate_ack ack, void* ctx) | |
//使用JSON_RPC宏包裹的函数名就可以被wifi.io的http接口调用,同时也可以被本地http接口调用 | |
{ | |
int ret = STATE_OK; | |
char* err_msg = NULL; | |
char onoff_msg[32]; | |
//下面从json中提取 param 字符串 | |
if(JSMN_STRING != pjn->tkn->type || | |
STATE_OK != jsmn.tkn2val_str(pjn->js, pjn->tkn, onoff_msg, sizeof(onoff_msg), NULL)){ //pjn->tkn 指向json中params字段的名值对,使用tkn2val_str()从中提取string类型的value | |
ret = STATE_ERROR; | |
err_msg = "Params error."; | |
LOG_WARN("mirror:%s.\r\n", err_msg); | |
goto exit_err; | |
} | |
//这里正确的得到了字符串,放置在 onoff_msg 中 | |
if(0 == _strcmp("on", onoff_msg)){ | |
api_io.high(WIFIIO_GPIO_01); | |
api_io.high(WIFIIO_GPIO_02); | |
} | |
else if(0 == _strcmp("off", onoff_msg)){ | |
api_io.low(WIFIIO_GPIO_01); | |
api_io.low(WIFIIO_GPIO_02); | |
} | |
if(ack)jsmn.delegate_ack_result(ack, ctx, ret); | |
return ret; | |
exit_err: | |
if(ack)jsmn.delegate_ack_err(ack, ctx, ret, err_msg); | |
return ret; | |
} | |
int main(int argc, char* argv[]) | |
{ | |
int n; | |
api_io.init(WIFIIO_GPIO_01, OUT_PUSH_PULL); | |
api_io.init(WIFIIO_GPIO_02, OUT_PUSH_PULL); | |
api_io.low(WIFIIO_GPIO_01); | |
api_io.high(WIFIIO_GPIO_02); | |
n = 0; | |
while(n++ < 15) | |
{ | |
api_os.tick_sleep(1000); | |
api_io.toggle(WIFIIO_GPIO_01); | |
api_io.toggle(WIFIIO_GPIO_02); | |
} | |
return ADDON_LOADER_GRANTED; | |
//err_exit: | |
return ADDON_LOADER_ABORT; //release | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment