Home | History | Annotate | Download | only in i2c

Lines Matching refs:params

290 static void VocAlgorithm__init_instances(VocAlgorithmParams* params);
292 VocAlgorithm__mean_variance_estimator__init(VocAlgorithmParams* params);
294 VocAlgorithmParams* params);
296 VocAlgorithmParams* params, fix16_t std_initial,
299 VocAlgorithm__mean_variance_estimator__set_states(VocAlgorithmParams* params,
303 VocAlgorithm__mean_variance_estimator__get_std(VocAlgorithmParams* params);
305 VocAlgorithm__mean_variance_estimator__get_mean(VocAlgorithmParams* params);
307 VocAlgorithmParams* params, fix16_t voc_index_from_prior);
309 VocAlgorithmParams* params, fix16_t sraw, fix16_t voc_index_from_prior);
311 VocAlgorithmParams* params);
313 VocAlgorithmParams* params, fix16_t L, fix16_t X0, fix16_t K);
315 VocAlgorithmParams* params, fix16_t sample);
316 static void VocAlgorithm__mox_model__init(VocAlgorithmParams* params);
317 static void VocAlgorithm__mox_model__set_parameters(VocAlgorithmParams* params,
320 static fix16_t VocAlgorithm__mox_model__process(VocAlgorithmParams* params,
322 static void VocAlgorithm__sigmoid_scaled__init(VocAlgorithmParams* params);
324 VocAlgorithm__sigmoid_scaled__set_parameters(VocAlgorithmParams* params,
326 static fix16_t VocAlgorithm__sigmoid_scaled__process(VocAlgorithmParams* params,
328 static void VocAlgorithm__adaptive_lowpass__init(VocAlgorithmParams* params);
330 VocAlgorithm__adaptive_lowpass__set_parameters(VocAlgorithmParams* params);
332 VocAlgorithm__adaptive_lowpass__process(VocAlgorithmParams* params,
335 void VocAlgorithm_init(VocAlgorithmParams* params) {
337 params->mVoc_Index_Offset = F16(VocAlgorithm_VOC_INDEX_OFFSET_DEFAULT);
338 params->mTau_Mean_Variance_Hours =
340 params->mGating_Max_Duration_Minutes =
342 params->mSraw_Std_Initial = F16(VocAlgorithm_SRAW_STD_INITIAL);
343 params->mUptime = F16(0.);
344 params->mSraw = F16(0.);
345 params->mVoc_Index = 0;
346 VocAlgorithm__init_instances(params);
349 static void VocAlgorithm__init_instances(VocAlgorithmParams* params) {
351 VocAlgorithm__mean_variance_estimator__init(params);
353 params, params->mSraw_Std_Initial, params->mTau_Mean_Variance_Hours,
354 params->mGating_Max_Duration_Minutes);
355 VocAlgorithm__mox_model__init(params);
357 params, VocAlgorithm__mean_variance_estimator__get_std(params),
358 VocAlgorithm__mean_variance_estimator__get_mean(params));
359 VocAlgorithm__sigmoid_scaled__init(params);
360 VocAlgorithm__sigmoid_scaled__set_parameters(params,
361 params->mVoc_Index_Offset);
362 VocAlgorithm__adaptive_lowpass__init(params);
363 VocAlgorithm__adaptive_lowpass__set_parameters(params);
366 void VocAlgorithm_get_states(VocAlgorithmParams* params, int32_t* state0,
369 *state0 = VocAlgorithm__mean_variance_estimator__get_mean(params);
370 *state1 = VocAlgorithm__mean_variance_estimator__get_std(params);
374 void VocAlgorithm_set_states(VocAlgorithmParams* params, int32_t state0,
378 params, state0, state1, F16(VocAlgorithm_PERSISTENCE_UPTIME_GAMMA));
379 params->mSraw = state0;
382 void VocAlgorithm_set_tuning_parameters(VocAlgorithmParams* params,
388 params->mVoc_Index_Offset = (fix16_from_int(voc_index_offset));
389 params->mTau_Mean_Variance_Hours = (fix16_from_int(learning_time_hours));
390 params->mGating_Max_Duration_Minutes =
392 params->mSraw_Std_Initial = (fix16_from_int(std_initial));
393 VocAlgorithm__init_instances(params);
396 void VocAlgorithm_process(VocAlgorithmParams* params, int32_t sraw,
399 if ((params->mUptime <= F16(VocAlgorithm_INITIAL_BLACKOUT))) {
400 params->mUptime =
401 (params->mUptime + F16(VocAlgorithm_SAMPLING_INTERVAL));
409 params->mSraw = (fix16_from_int((sraw - 20000)));
411 params->mVoc_Index =
412 VocAlgorithm__mox_model__process(params, params->mSraw);
413 params->mVoc_Index =
414 VocAlgorithm__sigmoid_scaled__process(params, params->mVoc_Index);
415 params->mVoc_Index =
416 VocAlgorithm__adaptive_lowpass__process(params, params->mVoc_Index);
417 if ((params->mVoc_Index < F16(0.5))) {
418 params->mVoc_Index = F16(0.5);
420 if ((params->mSraw > F16(0.))) {
422 params, params->mSraw, params->mVoc_Index);
424 params, VocAlgorithm__mean_variance_estimator__get_std(params),
425 VocAlgorithm__mean_variance_estimator__get_mean(params));
428 *voc_index = (fix16_cast_to_int((params->mVoc_Index + F16(0.5))));
433 VocAlgorithm__mean_variance_estimator__init(VocAlgorithmParams* params) {
435 VocAlgorithm__mean_variance_estimator__set_parameters(params, F16(0.),
437 VocAlgorithm__mean_variance_estimator___init_instances(params);
441 VocAlgorithmParams* params) {
443 VocAlgorithm__mean_variance_estimator___sigmoid__init(params);
447 VocAlgorithmParams* params, fix16_t std_initial,
450 params->m_Mean_Variance_Estimator__Gating_Max_Duration_Minutes =
452 params->m_Mean_Variance_Estimator___Initialized = false;
453 params->m_Mean_Variance_Estimator___Mean = F16(0.);
454 params->m_Mean_Variance_Estimator___Sraw_Offset = F16(0.);
455 params
456 params->m_Mean_Variance_Estimator___Gamma =
461 params->m_Mean_Variance_Estimator___Gamma_Initial_Mean =
465 params->m_Mean_Variance_Estimator___Gamma_Initial_Variance = F16(
469 params->m_Mean_Variance_Estimator__Gamma_Mean = F16(0.);
470 params->m_Mean_Variance_Estimator__Gamma_Variance = F16(0.);
471 params->m_Mean_Variance_Estimator___Uptime_Gamma = F16(0.);
472 params->m_Mean_Variance_Estimator___Uptime_Gating = F16(0.);
473 params->m_Mean_Variance_Estimator___Gating_Duration_Minutes = F16(0.);
477 VocAlgorithm__mean_variance_estimator__set_states(VocAlgorithmParams* params,
481 params->m_Mean_Variance_Estimator___Mean = mean;
482 params->m_Mean_Variance_Estimator___Std = std;
483 params->m_Mean_Variance_Estimator___Uptime_Gamma = uptime_gamma;
484 params->m_Mean_Variance_Estimator___Initialized = true;
488 VocAlgorithm__mean_variance_estimator__get_std(VocAlgorithmParams* params) {
490 return params->m_Mean_Variance_Estimator___Std;
494 VocAlgorithm__mean_variance_estimator__get_mean(VocAlgorithmParams* params) {
496 return (params->m_Mean_Variance_Estimator___Mean +
497 params->m_Mean_Variance_Estimator___Sraw_Offset);
501 VocAlgorithmParams* params, fix16_t voc_index_from_prior) {
515 if ((params->m_Mean_Variance_Estimator___Uptime_Gamma < uptime_limit)) {
516 params->m_Mean_Variance_Estimator___Uptime_Gamma =
517 (params->m_Mean_Variance_Estimator___Uptime_Gamma +
520 if ((params->m_Mean_Variance_Estimator___Uptime_Gating < uptime_limit)) {
521 params->m_Mean_Variance_Estimator___Uptime_Gating =
522 (params->m_Mean_Variance_Estimator___Uptime_Gating +
526 params, F16(1.), F16(VocAlgorithm_INIT_DURATION_MEAN),
530 params, params->m_Mean_Variance_Estimator___Uptime_Gamma);
532 (params->m_Mean_Variance_Estimator___Gamma +
533 (fix16_mul((params->m_Mean_Variance_Estimator___Gamma_Initial_Mean -
534 params->m_Mean_Variance_Estimator___Gamma),
542 params, params->m_Mean_Variance_Estimator___Uptime_Gating))));
544 params, F16(1.), gating_threshold_mean,
548 params, voc_index_from_prior);
549 params->m_Mean_Variance_Estimator__Gamma_Mean =
552 params, F16(1.), F16(VocAlgorithm_INIT_DURATION_VARIANCE),
556 params, params->m_Mean_Variance_Estimator___Uptime_Gamma);
558 (params->m_Mean_Variance_Estimator___Gamma +
560 (params->m_Mean_Variance_Estimator___Gamma_Initial_Variance -
561 params->m_Mean_Variance_Estimator___Gamma),
569 params, params->m_Mean_Variance_Estimator___Uptime_Gating))));
571 params, F16(1.), gating_threshold_variance,
575 params, voc_index_from_prior);
576 params->m_Mean_Variance_Estimator__Gamma_Variance =
578 params->m_Mean_Variance_Estimator___Gating_Duration_Minutes =
579 (params->m_Mean_Variance_Estimator___Gating_Duration_Minutes +
584 if ((params->m_Mean_Variance_Estimator___Gating_Duration_Minutes <
586 params->m_Mean_Variance_Estimator___Gating_Duration_Minutes = F16(0.);
588 if ((params->m_Mean_Variance_Estimator___Gating_Duration_Minutes >
589 params->m_Mean_Variance_Estimator__Gating_Max_Duration_Minutes)) {
590 params->m_Mean_Variance_Estimator___Uptime_Gating = F16(0.);
595 VocAlgorithmParams* params, fix16_t sraw, fix16_t voc_index_from_prior) {
601 if (!params->m_Mean_Variance_Estimator___Initialized) {
602 params->m_Mean_Variance_Estimator___Initialized = true;
603 params->m_Mean_Variance_Estimator___Sraw_Offset = sraw;
604 params->m_Mean_Variance_Estimator___Mean = F16(0.);
606 if (((params->m_Mean_Variance_Estimator___Mean >= F16(100.)) ||
607 (params->m_Mean_Variance_Estimator___Mean <= F16(-100.)))) {
608 params->m_Mean_Variance_Estimator___Sraw_Offset =
609 (params->m_Mean_Variance_Estimator___Sraw_Offset +
610 params->m_Mean_Variance_Estimator___Mean);
611 params->m_Mean_Variance_Estimator___Mean = F16(0.);
613 sraw = (sraw - params->m_Mean_Variance_Estimator___Sraw_Offset);
615 params, voc_index_from_prior);
617 (sraw - params->m_Mean_Variance_Estimator___Mean),
620 c = (params->m_Mean_Variance_Estimator___Std - delta_sgp);
622 c = (params->m_Mean_Variance_Estimator___Std + delta_sgp);
628 params->m_Mean_Variance_Estimator___Std = (fix16_mul(
632 params->m_Mean_Variance_Estimator__Gamma_Variance)))),
635 params->m_Mean_Variance_Estimator___Std,
637 params->m_Mean_Variance_Estimator___Std,
644 params->m_Mean_Variance_Estimator__Gamma_Variance,
648 params->m_Mean_Variance_Estimator___Mean =
649 (params->m_Mean_Variance_Estimator___Mean +
650 (fix16_mul(params->m_Mean_Variance_Estimator__Gamma_Mean,
656 VocAlgorithmParams* params) {
659 params, F16(0.), F16(0.), F16(0.));
663 VocAlgorithmParams* params, fix16_t L, fix16_t X0, fix16_t K) {
665 params->m_Mean_Variance_Estimator___Sigmoid__L = L;
666 params->m_Mean_Variance_Estimator___Sigmoid__K = K;
667 params->m_Mean_Variance_Estimator___Sigmoid__X0 = X0;
671 VocAlgorithmParams* params, fix16_t sample) {
675 x = (fix16_mul(params->m_Mean_Variance_Estimator___Sigmoid__K,
676 (sample - params->m_Mean_Variance_Estimator___Sigmoid__X0)));
678 return params->m_Mean_Variance_Estimator___Sigmoid__L;
682 return (fix16_div(params->m_Mean_Variance_Estimator___Sigmoid__L,
687 static void VocAlgorithm__mox_model__init(VocAlgorithmParams* params) {
689 VocAlgorithm__mox_model__set_parameters(params, F16(1.), F16(0.));
692 static void VocAlgorithm__mox_model__set_parameters(VocAlgorithmParams* params,
696 params->m_Mox_Model__Sraw_Std = SRAW_STD;
697 params->m_Mox_Model__Sraw_Mean = SRAW_MEAN;
700 static fix16_t VocAlgorithm__mox_model__process(VocAlgorithmParams* params,
703 return (fix16_mul((fix16_div((sraw - params->m_Mox_Model__Sraw_Mean),
704 (-(params->m_Mox_Model__Sraw_Std +
709 static void VocAlgorithm__sigmoid_scaled__init(VocAlgorithmParams* params) {
711 VocAlgorithm__sigmoid_scaled__set_parameters(params, F16(0.));
715 VocAlgorithm__sigmoid_scaled__set_parameters(VocAlgorithmParams* params,
718 params->m_Sigmoid_Scaled__Offset = offset;
721 static fix16_t VocAlgorithm__sigmoid_scaled__process(VocAlgorithmParams* params,
737 (fix16_mul(F16(5.), params->m_Sigmoid_Scaled__Offset))),
744 (fix16_div(params->m_Sigmoid_Scaled__Offset,
752 static void VocAlgorithm__adaptive_lowpass__init(VocAlgorithmParams* params) {
754 VocAlgorithm__adaptive_lowpass__set_parameters(params);
758 VocAlgorithm__adaptive_lowpass__set_parameters(VocAlgorithmParams* params) {
760 params->m_Adaptive_Lowpass__A1 =
763 params->m_Adaptive_Lowpass__A2 =
766 params->m_Adaptive_Lowpass___Initialized = false;
770 VocAlgorithm__adaptive_lowpass__process(VocAlgorithmParams* params,
778 if (!params->m_Adaptive_Lowpass___Initialized) {
779 params->m_Adaptive_Lowpass___X1 = sample;
780 params->m_Adaptive_Lowpass___X2 = sample;
781 params->m_Adaptive_Lowpass___X3 = sample;
782 params->m_Adaptive_Lowpass___Initialized = true;
784 params->m_Adaptive_Lowpass___X1 =
785 ((fix16_mul((F16(1.) - params->m_Adaptive_Lowpass__A1),
786 params->m_Adaptive_Lowpass___X1)) +
787 (fix16_mul(params->m_Adaptive_Lowpass__A1, sample)));
788 params->m_Adaptive_Lowpass___X2 =
789 ((fix16_mul((F16(1.) - params->m_Adaptive_Lowpass__A2),
790 params->m_Adaptive_Lowpass___X2)) +
791 (fix16_mul(params->m_Adaptive_Lowpass__A2, sample)));
793 (params->m_Adaptive_Lowpass___X1 - params->m_Adaptive_Lowpass___X2);
804 params->m_Adaptive_Lowpass___X3 =
805 ((fix16_mul((F16(1.) - a3), params->m_Adaptive_Lowpass___X3)) +
807 return params->m_Adaptive_Lowpass___X3;