targets/plc_debug.c
changeset 969 1950fe687dde
parent 954 ab487d32ce9a
child 985 cd8dadcef426
equal deleted inserted replaced
967:8a339cd61cb4 969:1950fe687dde
   180 
   180 
   181 void RetainIterator(void* varp, __IEC_types_enum vartype){
   181 void RetainIterator(void* varp, __IEC_types_enum vartype){
   182     BufferIterator(varp, vartype, 0);
   182     BufferIterator(varp, vartype, 0);
   183 }
   183 }
   184 
   184 
       
   185 extern void PLC_GetTime(IEC_TIME*);
   185 extern int TryEnterDebugSection(void);
   186 extern int TryEnterDebugSection(void);
   186 extern long AtomicCompareExchange(long*, long, long);
   187 extern long AtomicCompareExchange(long*, long, long);
   187 extern long long AtomicCompareExchange64(long long* , long long , long long);
   188 extern long long AtomicCompareExchange64(long long* , long long , long long);
   188 extern void LeaveDebugSection(void);
   189 extern void LeaveDebugSection(void);
   189 extern void ValidateRetainBuffer(void);
   190 extern void ValidateRetainBuffer(void);
   355    | Message | Buffer |
   356    | Message | Buffer |
   356    | counter | Index  | */
   357    | counter | Index  | */
   357 static uint64_t LogCursor[LOG_LEVELS] = {0x0,0x0,0x0,0x0};
   358 static uint64_t LogCursor[LOG_LEVELS] = {0x0,0x0,0x0,0x0};
   358 
   359 
   359 /* Store one log message of give size */
   360 /* Store one log message of give size */
   360 int LogMessage(uint8_t level, char* buf, uint32_t size){
   361 int LogMessage(uint8_t level, uint8_t* buf, uint32_t size){
   361     if(size < LOG_BUFFER_SIZE - sizeof(mTail)){
   362     if(size < LOG_BUFFER_SIZE - sizeof(mTail)){
   362         uint32_t buffpos;
   363         uint32_t buffpos;
   363         uint64_t new_cursor, old_cursor;
   364         uint64_t new_cursor, old_cursor;
   364 
   365 
   365         mTail tail;
   366         mTail tail;
   385         copy_to_log(level, buffpos, buf, size);
   386         copy_to_log(level, buffpos, buf, size);
   386         copy_to_log(level, (buffpos + size) & LOG_BUFFER_MASK, &tail, sizeof(mTail));
   387         copy_to_log(level, (buffpos + size) & LOG_BUFFER_MASK, &tail, sizeof(mTail));
   387 
   388 
   388         return 1; /* Success */
   389         return 1; /* Success */
   389     }else{
   390     }else{
   390         char mstr[] = "Logging error : message too big";
   391     	uint8_t mstr[] = "Logging error : message too big";
   391         LogMessage(LOG_CRITICAL, mstr, sizeof(mstr));
   392         LogMessage(LOG_CRITICAL, mstr, sizeof(mstr));
   392     }
   393     }
   393     return 0;
   394     return 0;
   394 }
   395 }
   395 
   396