Browse Source

ringbuffer这里会死循环,右电机错误码赋值前也校验一下

paint_robot_new-v1.5
Lizongdi 6 days ago
parent
commit
e0db2eaa10
  1. 17
      library/ringbuffer/ringbuffer.c
  2. 4
      project/paint_robot_new/paint_robot_new.c

17
library/ringbuffer/ringbuffer.c

@ -395,7 +395,6 @@ int rd_RingbufferGetchar(rd_ringbuf_t *rb, char *ch)
int rd_RingbufferDataLen(rd_ringbuf_t *rb)
{
if (!rb) return RD_INVALUE;
int iRet = 0;
unsigned short wi = ATOMIC_LOAD(&rb->m_sWriteIndex, unsigned short, ATOMIC_ORDER_ACQUIRE);
unsigned short ri = ATOMIC_LOAD(&rb->m_sReadIndex, unsigned short, ATOMIC_ORDER_RELAXED);
@ -403,23 +402,13 @@ int rd_RingbufferDataLen(rd_ringbuf_t *rb)
unsigned char rb_m = ATOMIC_LOAD(&rb->m_bReadMirror, unsigned char, ATOMIC_ORDER_RELAXED);
if (wi == ri) {
iRet = (wb == rb_m) ? 0 : rb->m_iBufsize;
return (wb == rb_m) ? 0 : rb->m_iBufsize;
}
if (wb == rb_m) {
iRet = wi - ri;
return wi - ri;
} else {
iRet = rb->m_iBufsize - (ri - wi);
}
if (iRet >= 0)
{
return iRet;
}
else
{
log_e("wb = %d, rb_m = %d, wi = %d, ri = %d", wb, rb_m, wi, ri);
return 0;
return rb->m_iBufsize - (ri - wi);
}
}

4
project/paint_robot_new/paint_robot_new.c

@ -757,7 +757,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg)
g_stIV.Left_Motor_Err = uiFailtCode[1];
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_LEFT_MOTOR, NULL, 0);
}
else
else if (uiFailtCode[0] == 2)
{
g_stIV.Right_Motor_Err = uiFailtCode[1];
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_RIGHT_MOTOR, NULL, 0);
@ -866,11 +866,11 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg)
log_a("Motor Error ! error code: left [%d] right [%d]", g_stIV.Left_Motor_Err, g_stIV.Right_Motor_Err);
}
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_POWER_DISABLE, NULL, 0);
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_STOP_ALL, NULL, 0);
if (g_stMK32.IsOnline == 0)
{
g_Is_All_Button_Reset = 0;
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_POWER_DISABLE, NULL, 0);
}
break;
}

Loading…
Cancel
Save