pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT

Dependencies:   mbed MMA8451Q USBDevice WakeUp vt100

Fork of afero_node_suntory_2017_06_15 by Orefatoi

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Tilt.cpp Source File

Tilt.cpp

00001 #if defined (TARGET_TEENSY3_1)
00002 #if 0
00003 #include "Tilt.hpp"
00004 
00005 NAMESPACE_MARUSOLSENSORMANAGER_START
00006 
00007 Tilt *Tilt::self = NULL;
00008 Tilt::Tilt() : tlt_beer(PTB2, PullUp), tlt_bubble(PTB3, PullUp),
00009     TLT_COUNTER(100), loopTiltDelay(0), SensorCommonMembers("TAP","TILT","E",0)
00010 {   
00011     initQ();
00012 }
00013 
00014 void
00015 Tilt::initQ()
00016 {
00017     memset(Q_newVal,EMPTY,sizeof(Q_newVal));
00018 }
00019 
00020 inline
00021 void
00022 Tilt::putQ(uint8_t oldVal, uint8_t newVal, uint16_t duration, time_t time)
00023 {
00024     for (int i = 0; i < TODO_QUEUE_SIZE; i++)
00025     {
00026         SERIAL_PRINT_DBG("!!%d\n",Q_newVal[i]);
00027         if(Q_newVal[i] == EMPTY)
00028         {
00029             Q_newVal[i] = newVal;
00030             Q_oldVal[i] = oldVal;
00031             Q_time[i] = time;
00032             Q_oldValDuration[i] = oldcount;
00033             ToDoQ::queuePut(self);
00034             break;
00035         }
00036     }
00037 }
00038 
00039 inline
00040 void
00041 Tilt::getQ(uint8_t *oldVal, uint8_t *newVal, uint16_t *duration, time_t *time)
00042 {
00043     for (int i = 0; i < TODO_QUEUE_SIZE; i++)
00044     {
00045         if (Q_newVal[i] != EMPTY)
00046         {
00047             *newVal = Q_newVal[i];
00048             *oldVal = Q_oldVal[i];
00049             *time = Q_time[i];
00050             *duration = Q_oldValDuration[i];
00051             Q_newVal[i]=EMPTY;
00052             break;
00053         }
00054     }
00055 }
00056 
00057 void
00058 Tilt::read_tilt()
00059 {
00060     getInstance<Tilt>()->_read_tilt();
00061 }
00062     
00063 void
00064 Tilt::_read_tilt()
00065 {
00066     oldcount++;
00067     if(!tlt_beer.read())
00068     {
00069         tlt_counter1 ++;
00070         if(tlt_counter1 > TLT_COUNTER)
00071         {
00072             tlt_counter3 = 0;
00073             tlt_counter2 = 0;
00074             newval = BEER;
00075         }
00076     }
00077     if(!tlt_bubble.read())
00078     {
00079         tlt_counter2 ++;
00080         if(tlt_counter2 > TLT_COUNTER)
00081         {
00082             tlt_counter3 = 0;
00083             tlt_counter1 = 0;
00084             newval = BUBBLE;
00085         }
00086     }
00087     if(tlt_beer.read() && tlt_bubble.read())
00088     {
00089         tlt_counter3 ++;
00090         if(tlt_counter3 > TLT_COUNTER)
00091         {
00092             tlt_counter2 = 0;
00093             tlt_counter1 = 0;
00094             newval = STOP;
00095         }
00096     }
00097     if(oldval != newval)
00098     {
00099         SERIAL_PRINT_DBG("!!%d->%d\n",newval,oldval);
00100         putQ(oldval,newval,oldcount,RTC_Handler::getInstance()->getUTC());
00101         oldval = newval;
00102         oldcount = 0;
00103     }
00104 }
00105         
00106 void
00107 Tilt::toJSON(char *buf)
00108 {
00109     uint8_t oldval, newval;
00110     uint16_t duration;
00111     time_t _time;
00112     getQ(&oldval, &newval, &duration, &_time);
00113     char *fmt = "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":[\"%d\"],\"UNIT\":\"%s\"}]}";
00114     sprintf(buf,fmt, devType, partNum, _time, newval, unit);
00115     SERIAL_PRINT_DBG("%s\n",buf);
00116 }
00117 
00118 void
00119 Tilt::getBytes(uint8_t*)
00120 {
00121 }   
00122 
00123 void
00124 Tilt::onLoop()
00125 {
00126     if(getInstance<Tilt>()->loopTiltDelay > 200)
00127     {
00128         getInstance<Tilt>()->loopTiltDelay = 0;
00129         getInstance<Tilt>()->read_tilt();
00130     }
00131     else
00132     {
00133         getInstance<Tilt>()->loopTiltDelay += 1;
00134     }
00135 }
00136 
00137 NAMESPACE_MARUSOLSENSORMANAGER_END
00138 #endif
00139 #endif //TARGET_TEENSY3_1