diff --git a/src/shared/BusTemplate.h b/src/shared/BusTemplate.h index 482c8812e552471302881d78c9fdbb96e329e7bc..41b86f669afcfe83a8210acf1fc8365305a73e25 100644 --- a/src/shared/BusTemplate.h +++ b/src/shared/BusTemplate.h @@ -73,7 +73,8 @@ private: inline void _write(uint8_t byte) const { getSPIAddr(N)->DR=byte; while((getSPIAddr(N)->SR & SPI_SR_RXNE)==0); - byte=getSPIAddr(N)->DR; + volatile uint8_t temp; + temp = getSPIAddr(N)->DR; } inline int _read(void* buffer, size_t max_len) const { diff --git a/src/shared/boards/AnakinBoard.cpp b/src/shared/boards/AnakinBoard.cpp index 93420571952f20fab184e8a0b5ba9121140ac2f3..c4f009f037f7c33472cb970e53413ad6b4bd1a9f 100644 --- a/src/shared/boards/AnakinBoard.cpp +++ b/src/shared/boards/AnakinBoard.cpp @@ -4,10 +4,6 @@ if (!x->init()) { sLog->logString("=== ERR: CANNOT INIT " #x); } \ } while(0) -#define ADD_SAMPLER(type, name, rate) \ - sEventScheduler->add(std::bind(& type ## SensorSampler::Update,name), \ - rate, #name "-" #rate "ms") - AnakinBoard::AnakinBoard() { mInited = false; @@ -78,6 +74,10 @@ bool AnakinBoard::init() m10HzSimple.AddSensor(mS_MS580); sLog->logString("Adding samplers to scheduler\n"); + #define ADD_SAMPLER(type, name, rate) \ + sEventScheduler->add(std::bind(& type ## SensorSampler::Update,name),\ + rate, #name "-" #rate "ms") + ADD_SAMPLER(DMA, m100HzDMA, 10); // 10ms ADD_SAMPLER(DMA, m25HzDMA, 40); // 25ms ADD_SAMPLER(Simple, m100HzSimple, 10); // 10ms diff --git a/src/shared/log/Log.h b/src/shared/log/Log.h index 9e11e6f01a819a9c7d6f65c320a1c4a53f394175..3be1e16ffdc9add2275d41651034f5e51f7f2f1d 100644 --- a/src/shared/log/Log.h +++ b/src/shared/log/Log.h @@ -44,7 +44,7 @@ public: std::vector<uint8_t> buf(2 + sizeof(float)); buf[0] = DATA_FLOAT; buf[1] = id; - memcpy(&buf[2], &data, sizeof(float)); + *((float *)&buf[2]) = data; queue(std::move(buf)); } @@ -56,9 +56,9 @@ public: buf[0] = DATA_VEC3; buf[1] = id; - tmp = data.getX(); memcpy(&buf[2], &tmp, sizeof(float)); - tmp = data.getY(); memcpy(&buf[6], &tmp, sizeof(float)); - tmp = data.getZ(); memcpy(&buf[10], &tmp, sizeof(float)); + tmp = data.getX(); *((float *)&buf[2]) = tmp; + tmp = data.getY(); *((float *)&buf[6]) = tmp; + tmp = data.getZ(); *((float *)&buf[10]) = tmp; queue(std::move(buf)); } @@ -89,15 +89,17 @@ private: Log() : ActiveObject(1024) { + /* struct termios t; tcgetattr(STDIN_FILENO, &t); t.c_lflag &= ~(ISIG | ICANON | ECHO); tcsetattr(STDIN_FILENO,TCSANOW, &t); + */ } void write(const std::vector<uint8_t>& data) { - const char map[]="0123456789abcdef\r\n"; + static const char map[]="0123456789abcdef"; for(size_t i=0;i<data.size();i++) { const char& di = data[i]; @@ -106,7 +108,7 @@ private: out[1] = map[di & 0x0f]; ::write(1, out, 2); } - ::write(1, &map[16], 2); + ::write(1, "\r\n", 2); } void queue(std::vector<uint8_t>&& data)