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
USQueue.hpp
00001 #ifndef _ULTRA_SIMPLE_QUEUE_ 00002 #define _ULTRA_SIMPLE_QUEUE_ 00003 00004 //#include <string.h> 00005 00006 template<typename T> class USQueue 00007 { 00008 public: enum QSIZE 00009 { 00010 QSIZE_8 = 8, 00011 QSIZE_16 = 16, 00012 QSIZE_32 = 32, 00013 QSIZE_64 = 64 00014 }; 00015 private: T *q; 00016 private: unsigned char eqi; 00017 private: unsigned char dqi; 00018 private: T init_val; 00019 private: QSIZE _size; 00020 public: USQueue(T init_val, QSIZE _size = QSIZE_64) : eqi(0), dqi(0) 00021 { 00022 q = new T[_size]; 00023 for(unsigned int i=0; i<_size; ++i) 00024 { 00025 q[i] = init_val; 00026 }; 00027 this->init_val = init_val; 00028 this->_size = _size; 00029 } 00030 public: ~USQueue() 00031 { 00032 delete[] q; 00033 q = NULL; 00034 } 00035 public: inline void enq(T t) 00036 { 00037 q[eqi] = t; 00038 ++eqi; 00039 eqi = eqi&(_size-1); 00040 } 00041 private: inline T _deq() 00042 { 00043 T r = q[dqi]; 00044 q[dqi] = init_val; 00045 ++dqi; 00046 dqi = dqi&(_size-1); 00047 return r; 00048 } 00049 public: inline T deq() 00050 { 00051 T ret = init_val; 00052 for(unsigned int i=0; i<_size; ++i) 00053 { 00054 if( (ret = _deq()) != init_val ) 00055 { 00056 break; 00057 } 00058 } 00059 return ret; 00060 } 00061 public: inline T pkq(T unavailable) 00062 { 00063 T ret = unavailable; 00064 unsigned char _dqi = dqi; 00065 for(unsigned int i=0; i<_size; ++i) 00066 { 00067 T tmp = q[_dqi]; 00068 if( tmp != init_val ) 00069 { 00070 ret = tmp; 00071 break; 00072 } 00073 ++_dqi; 00074 _dqi = _dqi&(_size-1); 00075 } 00076 return ret; 00077 } 00078 public: size_t size() 00079 { 00080 return _size; 00081 } 00082 }; 00083 00084 #endif //_ULTRA_SIMPLE_QUEUE_
Generated on Thu Jul 14 2022 06:24:36 by 1.7.2