14 #endif |
14 #endif |
15 |
15 |
16 #define LOG_BUFFER_MASK (LOG_BUFFER_SIZE-1) |
16 #define LOG_BUFFER_MASK (LOG_BUFFER_SIZE-1) |
17 |
17 |
18 static char LogBuff[LOG_LEVELS][LOG_BUFFER_SIZE] LOG_BUFFER_ATTRS; |
18 static char LogBuff[LOG_LEVELS][LOG_BUFFER_SIZE] LOG_BUFFER_ATTRS; |
19 void inline copy_to_log(uint8_t level, uint32_t buffpos, void* buf, uint32_t size){ |
19 static void inline copy_to_log(uint8_t level, uint32_t buffpos, void* buf, uint32_t size){ |
20 if(buffpos + size < LOG_BUFFER_SIZE){ |
20 if(buffpos + size < LOG_BUFFER_SIZE){ |
21 memcpy(&LogBuff[level][buffpos], buf, size); |
21 memcpy(&LogBuff[level][buffpos], buf, size); |
22 }else{ |
22 }else{ |
23 uint32_t remaining = LOG_BUFFER_SIZE - buffpos; |
23 uint32_t remaining = LOG_BUFFER_SIZE - buffpos; |
24 memcpy(&LogBuff[level][buffpos], buf, remaining); |
24 memcpy(&LogBuff[level][buffpos], buf, remaining); |
25 memcpy(LogBuff[level], (char*)buf + remaining, size - remaining); |
25 memcpy(LogBuff[level], (char*)buf + remaining, size - remaining); |
26 } |
26 } |
27 } |
27 } |
28 void inline copy_from_log(uint8_t level, uint32_t buffpos, void* buf, uint32_t size){ |
28 static void inline copy_from_log(uint8_t level, uint32_t buffpos, void* buf, uint32_t size){ |
29 if(buffpos + size < LOG_BUFFER_SIZE){ |
29 if(buffpos + size < LOG_BUFFER_SIZE){ |
30 memcpy(buf, &LogBuff[level][buffpos], size); |
30 memcpy(buf, &LogBuff[level][buffpos], size); |
31 }else{ |
31 }else{ |
32 uint32_t remaining = LOG_BUFFER_SIZE - buffpos; |
32 uint32_t remaining = LOG_BUFFER_SIZE - buffpos; |
33 memcpy(buf, &LogBuff[level][buffpos], remaining); |
33 memcpy(buf, &LogBuff[level][buffpos], remaining); |