// global variables //
///////////////////////////////////////////////////////////////
+// record the starting time
+unsigned long long bamboo_start_time;
+
// data structures for msgs
#define BAMBOO_OUT_BUF_LENGTH 3000
#define BAMBOO_MSG_BUF_LENGTH 3000
int msgdataindex;
int msgdatalast;
int msglength;
+volatile bool msgdatafull;
int outmsgdata[BAMBOO_OUT_BUF_LENGTH];
int outmsgindex;
int outmsglast;
int outmsgleft;
-bool isMsgHanging;
+volatile bool isMsgHanging;
volatile bool isMsgSending;
#define MSG_INDEXINC_I() \
#define MSG_REMAINSIZE_I(s) \
if(msgdataindex < msgdatalast) { \
(*(int*)s) = msgdatalast - msgdataindex; \
- } else { \
+ } else if((msgdataindex == msgdatalast) && (!msgdatafull)) {\
+ (*(int*)s) = 0; \
+ } else { \
(*(int*)s) = (BAMBOO_MSG_BUF_LENGTH) - msgdataindex + msgdatalast; \
}
msgdataindex = 0;
msgdatalast = 0;
msglength = BAMBOO_MSG_BUF_LENGTH;
+ msgdatafull = false;
for(i = 0; i < BAMBOO_OUT_BUF_LENGTH; ++i) {
outmsgdata[i] = -1;
}
#endif
#ifdef USEIO
- totalexetime = BAMBOO_GET_EXE_TIME();
+ totalexetime = BAMBOO_GET_EXE_TIME() - bamboo_start_time;
#else
- BAMBOO_DEBUGPRINT(BAMBOO_GET_EXE_TIME());
+ BAMBOO_DEBUGPRINT(BAMBOO_GET_EXE_TIME() - bamboo_start_time);
BAMBOO_DEBUGPRINT_REG(total_num_t6); // TODO for test
BAMBOO_DEBUGPRINT(0xbbbbbbbb);
#endif
MSGTYPE type;
type = msgdata[msgdataindex]; //[0]
MSG_INDEXINC_I();
+ msgdatafull = false;
// TODO
//tprintf("msg type: %x\n", type);
switch(type) {