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;
}
Esempio n. 3
0
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);
}
Esempio n. 5
0
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);
}