From 35d6525048dd64bc51163402ee407cc0e164f7de Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Thu, 28 Apr 2011 16:45:55 +0200 Subject: Seperated ppmsum-demuxer into seperate file. --- ppmsum.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 ppmsum.cpp (limited to 'ppmsum.cpp') diff --git a/ppmsum.cpp b/ppmsum.cpp new file mode 100644 index 0000000..ce601e5 --- /dev/null +++ b/ppmsum.cpp @@ -0,0 +1,39 @@ +#include "ppmsum.h" + +#include +#include + +namespace { + icucnt_t last_width, last_period; + + PPMSum* ppmsum; + int ppm_n = 0; + + static void icuwidthcb(ICUDriver *icup) { + last_width = icuGetWidthI(icup); + ppmsum->data[ppm_n] = last_width - 1050; + } + + static void icuperiodcb(ICUDriver *icup) { + last_period = icuGetPeriodI(icup); + if(last_period > 5000) { + ppm_n = 0; + } else { + ppm_n = (ppm_n + 1) % 4; + } + } + + static ICUConfig icucfg = { + ICU_INPUT_ACTIVE_HIGH, + 1000000, + icuwidthcb, + icuperiodcb + }; +}; + +void PPMSum::start() { + ppmsum = this; + + icuStart(&ICUD4, &icucfg); + icuEnable(&ICUD4); +} -- cgit v1.2.3