/****************************************************************************** *############################################################################* *# Private functions #* *############################################################################* ******************************************************************************/ static void datasCallback(Var datas) { VarValidator valid; Var v; VarArrayPos i; Light l; flockingClear(); PtrArray_clear(_lights); valid = VarValidator_new(); VarValidator_declareArrayVar(valid, "flocks"); VarValidator_declareArrayVar(valid, "thunderbolts"); VarValidator_declareArrayVar(valid, "skybox"); VarValidator_declareArrayVar(valid, "lights"); VarValidator_validate(valid, datas); VarValidator_del(valid); /*flocks of boids*/ v = Var_getArrayElemByCName(datas, "flocks"); i = 0; while (i < Var_getArraySize(v)) { flockingAddGroup(Var_getArrayElemByPos(v, i)); i++; } /*thunderbolt parameters*/ thunderboltSet(Var_getArrayElemByCName(datas, "thunderbolts")); /*skybox*/ skyboxSet(Var_getArrayElemByCName(datas, "skybox")); /*global lights*/ v = Var_getArrayElemByCName(datas, "lights"); i = 0; while (i < Var_getArraySize(v)) { l = lightAdd(); lightSetFromVar(l, Var_getArrayElemByPos(v, i)); lightToggle(l, TRUE); i++; PtrArray_append(_lights, l); } }
void Insteon::switch_callback(RESTContext* context) { RESTParameters* params = context->params; Dumais::JSON::JSON& json = context->returnData; InsteonID id = strtoul(params->getParam("id").c_str(),0,16); unsigned char subdev = 0; if (params->getParam("subdev")!="") { subdev = strtoul(params->getParam("subdev").c_str(),0,10); } if (params->getParam("action")=="on"){ unsigned char level =255; if (params->getParam("level")!="") level = atoi(params->getParam("level").c_str()); if (params->getParam("rate")!="") level = atoi(params->getParam("rate").c_str()); lightOn(id,level,subdev); } else if (params->getParam("action")=="off"){ lightOff(id,subdev); } else if (params->getParam("action")=="toggle"){ lightToggle(id,subdev); } json.addValue("ok","status"); }