void track_get_model_hsv(int ch, int *h_min, int *h_max, int *s_min, int *v_min) { if (!channel_in_bounds(ch)) return; *h_min = tracklib_results_snapshot.channels[ch].hsv_model[0]; *h_max = tracklib_results_snapshot.channels[ch].hsv_model[1]; *s_min = tracklib_results_snapshot.channels[ch].hsv_model[2]; *v_min = tracklib_results_snapshot.channels[ch].hsv_model[3]; }
void track_set_model_hsv(int ch, int h_min, int h_max, int s_min, int v_min) { if (!channel_in_bounds(ch)) return; tracklib_results_snapshot.channels[ch].new_model = 1; tracklib_results_snapshot.channels[ch].hsv_model[0] = h_min; tracklib_results_snapshot.channels[ch].hsv_model[1] = h_max; tracklib_results_snapshot.channels[ch].hsv_model[2] = s_min; tracklib_results_snapshot.channels[ch].hsv_model[3] = v_min; shared_mem_write(tracklib_sm_results, &tracklib_results_snapshot, sizeof(tracklib_results_snapshot)); }
int track_count(int ch) { if (!channel_in_bounds(ch)) return -1; return tracklib_results_snapshot.channels[ch].n_blobs; }
static int blob_in_bounds(int ch, int i) { if (!channel_in_bounds(ch)) return 0; return 0 <= i && i < tracklib_results_snapshot.channels[ch].n_blobs; }
int ADC_device_sample(const size_t channel) { return channel_in_bounds(channel) ? ADCConvertedValues[channel] : -1; }