diff -r f6d06bdd31e8 -r ffa24427396a targets/plc_debug.c --- a/targets/plc_debug.c Thu Jan 24 17:44:44 2013 +1100 +++ b/targets/plc_debug.c Tue Jan 29 16:21:01 2013 +1100 @@ -322,7 +322,7 @@ if(buffpos + size < LOG_BUFFER_SIZE){ memcpy(buf, &LogBuff[buffpos], size); }else{ - uint32_t remaining = LOG_BUFFER_SIZE - buffpos - 1; + uint32_t remaining = LOG_BUFFER_SIZE - buffpos; memcpy(buf, &LogBuff[buffpos], remaining); memcpy(buf + remaining, LogBuff, size - remaining); } @@ -387,27 +387,24 @@ uint32_t GetLogMessage(uint32_t msgidx, char* buf, uint32_t max_size){ uint64_t cursor = LogCursor; if(cursor){ - /* feeding cursor values */ - uint32_t curbuffpos = (uint32_t)cursor; - uint32_t curmsgidx = (cursor >> 32); - /* seach cursor */ - uint32_t stailpos = (curbuffpos - sizeof(mTail)) & LOG_BUFFER_MASK; + uint32_t stailpos = (uint32_t)cursor; uint32_t smsgidx; mTail tail; - tail.msgidx = curmsgidx; + tail.msgidx = cursor >> 32; + tail.msgsize = 0; /* Message search loop */ do { smsgidx = tail.msgidx; + stailpos = (stailpos - sizeof(mTail) - tail.msgsize ) & LOG_BUFFER_MASK; copy_from_log(stailpos, &tail, sizeof(mTail)); - stailpos = (stailpos - sizeof(mTail) - tail.msgsize ) & LOG_BUFFER_MASK; - }while(tail.msgidx == smsgidx - 1 && tail.msgidx > msgidx); + }while((tail.msgidx == smsgidx - 1) && (tail.msgidx > msgidx)); if(tail.msgidx == msgidx){ uint32_t sbuffpos = (stailpos - tail.msgsize ) & LOG_BUFFER_MASK; - uint32_t totalsize = tail.msgsize + sizeof(mTail); - copy_from_log(stailpos, &tail, totalsize > max_size ? max_size : totalsize); + uint32_t totalsize = tail.msgsize; /*sizeof(mTail);*/ + copy_from_log(sbuffpos, buf, totalsize > max_size ? max_size : totalsize); return totalsize; } }