Ejemplo n.º 1
0
void luaTask(void *params){

	doScript();

	while(1){
		portTickType xLastWakeTime, startTickTime;
		const portTickType xFrequency = LUA_1Hz;
		startTickTime = xLastWakeTime = xTaskGetTickCount();
		if (getShouldReloadScript()){
			doScript();
			setShouldReloadScript(0);
		}

		lockLua();
 		lua_getglobal(g_lua, LUA_PERIODIC_FUNCTION);
    	if (! lua_isnil(g_lua,-1)){
        	if (lua_pcall(g_lua, 0, 0, 0) != 0){
// TODO log or indicate error. store this in a "Last Error"
//        		SendString("Error calling ");
//        		SendString(LUA_PERIODIC_FUNCTION);
//        		SendString("(): ");
//        		SendString( lua_tostring(g_lua,-1));
//        		SendCrlf();
        		lua_pop(g_lua,1);
        	}
    	} else{
	       // //handle missing function error
	        lua_pop(g_lua,1);
	    }
    	unlockLua();

		vTaskDelayUntil( &xLastWakeTime, xFrequency );
	}
}
void ReloadScript(Serial *serial, unsigned int argc, char **argv)
{
    setShouldReloadScript(1);
    put_commandOK(serial);
}