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
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
Generated on Thu Jul 14 2022 06:24:36 by 1.7.2