📄 dbcmd.c
字号:
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 4.1 Message Data (call mbxmsg)
// This function is called from db33.This iprint_mbxmsg command prints
// ROS33 message data in mailbox.
//***********************************************************************
int *iprint_mbxmsg(int arg1, int arg2, int arg3)
{
T_MLBXCB* pMlbxcb;
T_MSG* pMsgwk;
UB msgwk;
int i, j, k, size;
rtncode = chk_param(arg1, arg2, MLBX_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(160) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** MBXID = %d ***\n", i);
tmpbuf.size += cnt;
pMlbxcb = (T_MLBXCB*)&g_sMlbxcb[i-1];
if(pMlbxcb->pMsg == 0){ /* nothing message */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(NONE)\n");
tmpbuf.size += cnt;
}else{
pMsgwk = pMlbxcb->pMsg; /* next message address */
j = 1;
do{
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"msg=%d (%08x):", j, pMsgwk);
tmpbuf.size += cnt;
size = 10; /* print massege(10byte) */
for( k = 0; k < size; k++){
msgwk = (UB)pMsgwk->msgcont[k];
cnt = sprintf(tmpbuf.buf+tmpbuf.size," %02x", msgwk);
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
pMsgwk = pMsgwk->pNxt; /* next message addres */
j++;
}while(pMsgwk != 0); /* if end data(0) */
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 4.2 Message Data (call mbfmsg)
// This function is called from db33.This iprint_mbfmsg command prints
// ROS33 message data in message buffer.
//***********************************************************************
int *iprint_mbfmsg(int arg1, int arg2, int arg3)
{
T_MSGBUFCB* pMsgbufcb;
T_MSG* pMsgwk;
T_TSKCB* pTskcb;
VP bufst;
VP bufend;
VP head;
VP tail;
UB msgwk;
int i, j, k, temp, msgsz;
rtncode = chk_param(arg1, arg2, MSGBUF_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(256) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** MBFID = %d ***\n", i);
tmpbuf.size += cnt;
pMsgbufcb = (T_MSGBUFCB*)&g_sMsgbufcb[i-1];
bufst = pMsgbufcb->bufst;
bufend = pMsgbufcb->bufend;
/* nothing message */
if((pMsgbufcb->ubEmpty == 1) &&
(pMsgbufcb->pNxtSndTsk == (UW*)&(pMsgbufcb->pNxtSndTsk))){
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(NONE)\n");
tmpbuf.size += cnt;
}else{
if(pMsgbufcb->ubEmpty == 0){
head = pMsgbufcb->head;
tail = pMsgbufcb->tail;
j = 1;
do{
/* get message size in head(4byte) */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"msg=%d (%08x):", j, head);
tmpbuf.size += cnt;
temp = *(unsigned char*)head++;
if(head >= bufend) head = bufst;
msgsz = temp;
temp = *(unsigned char*)head++;
if(head >= bufend) head = bufst;
temp <<= 8;
msgsz |= temp;
temp = *(unsigned char*)head++;
if(head >= bufend) head = bufst;
temp <<= 16;
msgsz |= temp;
temp = *(unsigned char*)head++;
if(head >= bufend) head = bufst;
temp <<= 24;
msgsz |= temp;
cnt = sprintf(tmpbuf.buf+tmpbuf.size," size=%04x:", msgsz);
tmpbuf.size += cnt;
k = msgsz;
while(k--){ /* print message */
msgwk = *((char*)head)++;
cnt = sprintf(tmpbuf.buf+tmpbuf.size," %02x", msgwk);
tmpbuf.size += cnt;
if(head >= bufend) head = bufst;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
j++;
}while(head != tail); /* if next point is tail */
}
pTskcb = (T_TSKCB*)pMsgbufcb->pNxtSndTsk;
if(pTskcb != (T_TSKCB*)&(pMsgbufcb->pNxtSndTsk)){
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(send waiting message)\n");
tmpbuf.size += cnt;
}
while(pTskcb != (T_TSKCB*)&(pMsgbufcb->pNxtSndTsk)){
j = 0; /* search task number(taski) */
while(&g_sTskcb[j] != pTskcb){
j++;
if(j == TSK_NUM){
break;
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"task%d (%08x):",
j+1, pTskcb->pMsgbuf);
tmpbuf.size += cnt;
msgsz = pTskcb->msgsize; /* get message size */
cnt = sprintf(tmpbuf.buf+tmpbuf.size," size=%04x:", msgsz);
tmpbuf.size += cnt;
head = pTskcb->pMsgbuf;
k = msgsz;
while(k--){ /* print message */
msgwk = *((char*)head)++;
cnt = sprintf(tmpbuf.buf+tmpbuf.size," %02x", msgwk);
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
pTskcb = (T_TSKCB*)pTskcb->pNxtTsk;
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 5.1 OS trace command (call statrc)
// This function is called from db33.This itrace_statrc command start
// ROS33 OS trace.
//***********************************************************************
int *itrace_statrc(int arg1, int arg2, int arg3)
{
init_ros_dbg_logging();
cnt = sprintf(tmpbuf.buf,"*** OS TRACE START ***\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 5.2 OS trace command (call endtrc)
// This function is called from db33.This itrace_endtrc command end
// ROS33 OS trace.
//***********************************************************************
int *itrace_endtrc(int arg1, int arg2, int arg3)
{
UINT max_size, head_cnt, tail_cnt, full_flg;
UINT* start_adr, end_adr;
UINT log_data_num;
end_ros_dbg_logging();
ros_dbg_bufinfo(&start_adr, &end_adr);
cnt = sprintf(tmpbuf.buf,"*** OS TRACE END *** (buffer_adr:%08x-%08x)\n",
start_adr, end_adr-1);
tmpbuf.size = cnt;
ros_dbg_loginfo(&max_size, &head_cnt, &tail_cnt, &full_flg);
if((head_cnt > max_size) || (tail_cnt > max_size)){ /* illegal */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"NONE\n");
tmpbuf.size += cnt;
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
if(full_flg > 0){
log_data_num = max_size; /* buffer full */
head_cnt++; /* count up head_cnt */
if(tail_cnt == 0){
tail_cnt = max_size; /* set tail_cnt = max_size */
}
}else{
log_data_num = tail_cnt;
if(tail_cnt > 0){
head_cnt++; /* count up head_cnt */
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"logging_data_num :%d\n",log_data_num);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"head_cnt :%d\n",head_cnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"tail_cnt :%d\n",tail_cnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"full_flg :%d\n",full_flg);
tmpbuf.size += cnt;
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 5.3 OS trace command (call dsptrc)
// This function is called from db33.This itrace_dsptrc command display
// ROS33 OS trace data.
//***********************************************************************
int *itrace_dsptrc(int arg1, int arg2, int arg3)
{
UINT max_size, head_cnt, tail_cnt, full_flg;
UINT* start_adr, end_adr;
UINT log_data_num, blknum;
UINT blk_data, tim, type, tid_func;
int i, loop;
char funcchar[12];
ros_dbg_bufinfo(&start_adr, &end_adr);
cnt = sprintf(tmpbuf.buf,"*** DISPLAY LOGGING DATA *** (buffer_adr:%08x-%08x)\n",
start_adr, end_adr-1);
tmpbuf.size = cnt;
ros_dbg_loginfo(&max_size, &head_cnt, &tail_cnt, &full_flg);
if((head_cnt > max_size) || (tail_cnt > max_size)){ /* illegal */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"NONE\n");
tmpbuf.size += cnt;
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
if(full_flg > 0){
log_data_num = max_size; /* buffer full */
head_cnt++; /* count up head_cnt */
if(tail_cnt == 0){
tail_cnt = max_size; /* set tail_cnt = max_size */
}
}else{
log_data_num = tail_cnt;
if(tail_cnt > 0){
head_cnt++; /* count up head_cnt */
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"logging_data_num :%d\n",log_data_num);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"head_cnt :%d\n",head_cnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"tail_cnt :%d\n",tail_cnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"full_flg :%d\n",full_flg);
tmpbuf.size += cnt;
if(arg1 == 0){
stano = head_cnt; /* all display(head -> tail) */
endno = tail_cnt;
}else{
if(arg2 == 0){
stano = arg1; /* start block only */
endno = arg1;
}else{
stano = arg1; /* start block -> end block */
endno = arg2;
}
}
if((stano <= 0) || (stano > max_size) ||
((full_flg == 0) && (stano > tail_cnt))){ /* illegal block */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"NONE\n");
tmpbuf.size += cnt;
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
if(full_flg == 0){
if((endno > tail_cnt) || (endno < stano)){
endno = tail_cnt;
}
}else{
if(endno > max_size){
endno = max_size;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -