Exemplo n.º 1
0
void api_sendSampleRecord(Serial *serial, SampleRecord *sr, unsigned int tick, int sendMeta){
	json_messageStart(serial);
	json_blockStart(serial, "s");

	json_uint(serial,"t",tick,1);
	if (sendMeta) writeSampleMeta(serial, sr, getConnectivitySampleRateLimit(), 1);

	size_t channelCount = 0;
	unsigned int channelsBitmask = 0;
	json_arrayStart(serial, "d");
	for (int i = 0; i < SAMPLE_RECORD_CHANNELS; i++){
		ChannelSample *sample = &(sr->Samples[i]);
		ChannelConfig * channelConfig = sample->channelConfig;
		if (SAMPLE_DISABLED != channelConfig->sampleRate){
			if (NIL_SAMPLE != sample->intValue){
				channelsBitmask = channelsBitmask | (1 << channelCount);
				int precision = sample->precision;
				if (precision > 0){
					put_float(serial, sample->floatValue, precision);
				}
				else{
					put_int(serial, sample->intValue);
				}
				serial->put_c(',');
			}
			channelCount++;
		}
	}
	put_uint(serial, channelsBitmask);
	json_arrayEnd(serial, 0);

	json_blockEnd(serial, 0);
	json_blockEnd(serial, 0);
}
Exemplo n.º 2
0
int api_getMeta(Serial *serial, const jsmntok_t *json){
	json_messageStart(serial);
	SampleRecord * sr = (SampleRecord *)portMalloc(sizeof(SampleRecord));
	if (sr == 0) return API_ERROR_SEVERE;

	initSampleRecord(getWorkingLoggerConfig(), sr);
	writeSampleMeta(serial, sr, getConnectivitySampleRateLimit(), 0);

	portFree(sr);
	json_blockEnd(serial, 0);
	return API_SUCCESS_NO_RETURN;
}
static int calcTelemetrySampleRate(LoggerConfig *config, int desiredSampleRate)
{
    int maxRate = getConnectivitySampleRateLimit();
    return isHigherSampleRate(desiredSampleRate, maxRate) ? maxRate : desiredSampleRate;
}