static void sendAnalogConfig(Serial *serial, size_t startIndex, size_t endIndex){ json_messageStart(serial); json_blockStart(serial, "getAnalogCfg"); for (size_t i = startIndex; i <= endIndex; i++){ ADCConfig *cfg = &(getWorkingLoggerConfig()->ADCConfigs[i]); json_blockStartInt(serial, i); json_channelConfig(serial, &(cfg->cfg), 1); json_int(serial, "scalMod", cfg->scalingMode, 1); json_int(serial, "prec", cfg->loggingPrecision, 1); json_float(serial, "linScal", cfg->linearScaling, ANALOG_SCALING_PRECISION, 1); json_blockStart(serial, "map"); json_arrayStart(serial, "raw"); for (size_t b = 0; b < ANALOG_SCALING_BINS; b++){ put_int(serial, cfg->scalingMap.rawValues[b]); if (b < ANALOG_SCALING_BINS - 1) serial->put_c(','); } json_arrayEnd(serial, 1); json_arrayStart(serial, "scal"); for (size_t b = 0; b < ANALOG_SCALING_BINS; b++){ put_float(serial, cfg->scalingMap.scaledValues[b], ANALOG_SCALING_PRECISION); if (b < ANALOG_SCALING_BINS - 1) serial->put_c(','); } json_arrayEnd(serial, 0); json_blockEnd(serial, 0); //map json_blockEnd(serial, i != endIndex); //index } json_blockEnd(serial, 0); json_blockEnd(serial, 0); }
int api_getConnectivityConfig(Serial *serial, const jsmntok_t *json){ ConnectivityConfig *cfg = &(getWorkingLoggerConfig()->ConnectivityConfigs); json_messageStart(serial); json_blockStart(serial, "getConnCfg"); json_int(serial, "sdMode", cfg->sdLoggingMode, 1); json_int(serial, "connMode", cfg->connectivityMode, 1); json_int(serial, "bgStream", cfg->backgroundStreaming, 0); json_blockEnd(serial, 0); json_blockEnd(serial, 0); return API_SUCCESS_NO_RETURN; }
void json_sendResult(Serial *serial, const char *messageName, int resultCode) { json_objStart(serial); json_objStartString(serial, messageName); json_int(serial, "rc", resultCode, 0); json_objEnd(serial, 0); json_objEnd(serial, 0); }
static void writeSampleMeta(Serial *serial, SampleRecord *sr, int sampleRateLimit, int more){ int sampleCount = 0; json_arrayStart(serial, "meta"); for (int i = 0; i < SAMPLE_RECORD_CHANNELS; i++){ ChannelSample *sample = &(sr->Samples[i]); ChannelConfig * channelConfig = sample->channelConfig; if (SAMPLE_DISABLED == channelConfig->sampleRate) continue; if (sampleCount++ > 0) serial->put_c(','); serial->put_c('{'); json_string(serial, "nm", channelConfig->label, 1); json_string(serial, "ut", channelConfig->units, 1); json_int(serial, "sr", decodeSampleRate(LOWER_SAMPLE_RATE(channelConfig->sampleRate, sampleRateLimit)), 0); serial->put_c('}'); } json_arrayEnd(serial, more); }
void WebController::setInterpreterActionParams(struct json_token *jsontoken, int indexOffset, int count, const char* pathTemplate) { double dParam0, dParam1, dParam2, dParam3, dParam4; int action; char path[64]; char *file = NULL; char *name = NULL; json_token *token; for(int i= 0;i<count;i++){ sprintf(path,pathTemplate,i); token = find_json_token(jsontoken, path); if(token){ action = dParam0 = dParam1 = dParam2 = dParam3 = dParam4 = 0; json_int(token,"action",&action); if(action > 0){ json_str(token,"name",&name,64); json_str(token,"file",&file,256); json_double(token,"dParam0",&dParam0); json_double(token,"dParam1",&dParam1); json_double(token,"dParam2",&dParam2); json_double(token,"dParam3",&dParam3); json_double(token,"dParam4",&dParam4); } //M2-M9,S index 2-9 //userButtons index 11-20 //M100-M119 index 21 -39 //Special actions index 41 -48 int actionIndex = indexOffset + i; int actionNameIndex = action > 0 && action < 10?action:10; if(actionNameIndex != 10){ //printf("Set action index %d to %s\n",actionIndex, ACTION_NAMES[actionNameIndex]); } Interpreter->McodeActions[actionIndex].Action = action; Interpreter->McodeActions[actionIndex].dParams[0] = dParam0; Interpreter->McodeActions[actionIndex].dParams[1] = dParam1; Interpreter->McodeActions[actionIndex].dParams[2] = dParam2; Interpreter->McodeActions[actionIndex].dParams[3] = dParam3; Interpreter->McodeActions[actionIndex].dParams[4] = dParam4; //file should be nulled if not set. if(file == NULL || action == 0){ Interpreter->McodeActions[actionIndex].String[0] = 0; } else { if(file[0]=='/'){ //path is absolute strcpy(Interpreter->McodeActions[actionIndex].String, file); } else { //path is relative. make it absolute char absoluteFile[256]; absolutePath(file, absoluteFile); strcpy(Interpreter->McodeActions[actionIndex].String, absoluteFile); } } } else { printf("Failed %s\n", pathTemplate); } } free(file); free(name); }
void api_sendLogStart(Serial *serial){ json_messageStart(serial); json_int(serial, "logStart", 1, 0); json_messageEnd(serial); }
static void json_channelConfig(Serial *serial, ChannelConfig *cfg, int more){ json_string(serial, "nm", cfg->label, 1); json_string(serial, "ut", cfg->units, 1); json_int(serial, "sr", cfg->sampleRate, more); }