1448 lines
33 KiB
C
1448 lines
33 KiB
C
|
|
|
|||
|
|
#define _IN_OPERATOR_C
|
|||
|
|
|
|||
|
|
#include "operator.h"
|
|||
|
|
|
|||
|
|
#include "serial.h"
|
|||
|
|
#include "delay.h"
|
|||
|
|
#include "tcpserver.h"
|
|||
|
|
#include "filetrans.h"
|
|||
|
|
#include "trigger.h"
|
|||
|
|
#include "stapp.h"
|
|||
|
|
#include "paras.h"
|
|||
|
|
|
|||
|
|
#include "extendboards.h"
|
|||
|
|
|
|||
|
|
#if (CUR_CORE_BOARD == CORE_BOARD_APP)
|
|||
|
|
|
|||
|
|
#include "workctrl.h"
|
|||
|
|
#include "installment.h"
|
|||
|
|
#include "error.h"
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
#include "cpuid.h"
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
int ReceiveMcParas(OperPacket * pPkt);
|
|||
|
|
int CreateMcParas(OperPacket * pPkt, int type, int id);
|
|||
|
|
void CleanBuffAfterAction(void);
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#if (OPERATOR_PORT == COMM_ETHERNET)
|
|||
|
|
|
|||
|
|
SocketCtrl * g_pOperatorSocket = NULL;
|
|||
|
|
#define OPERATOR_SIDX TCP_SERVER_SN_BEG // udp socket
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int OperatorSendData(u8 * pDatBuf, int len)
|
|||
|
|
{
|
|||
|
|
return EthernetSendData(g_pOperatorSocket, pDatBuf, len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int OperatorGetData(u8 * pDat, int expectLen)
|
|||
|
|
{
|
|||
|
|
return EthernetGetData(g_pOperatorSocket, pDat, expectLen);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
int OperatorGetRsLen(void)
|
|||
|
|
{
|
|||
|
|
return EthernetGetRsLen(g_pOperatorSocket);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
int OperatorGetSdFreeLen(void)
|
|||
|
|
{
|
|||
|
|
return EthernetGetSdFreeLen(g_pOperatorSocket);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
DataExFuns g_operDataExFuns;
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
int SendOperCommData(const u8 * pDatBuf, int len)
|
|||
|
|
{
|
|||
|
|
printf("SendOperCommData is Empty\r\n");
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetOperCommData(u8 * pDat, int expectLen)
|
|||
|
|
{
|
|||
|
|
printf("GetOperCommData is Empty\r\n");
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetOperRsvLen(void)
|
|||
|
|
{
|
|||
|
|
printf("GetOperRsvLen is Empty\r\n");
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetOperTrsFreeLen(void)
|
|||
|
|
{
|
|||
|
|
printf("GetOperTrsFreeLen is Empty\r\n");
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void InitOperator(void)
|
|||
|
|
{
|
|||
|
|
#if (OPERATOR_PORT == COMM_ETHERNET)
|
|||
|
|
InitEthernet();
|
|||
|
|
|
|||
|
|
g_pOperatorSocket = GetCtrlFromSocketIdx(OPERATOR_SIDX);
|
|||
|
|
|
|||
|
|
g_operDataExFuns.SendCommData = OperatorSendData;
|
|||
|
|
g_operDataExFuns.GetCommData = OperatorGetData;
|
|||
|
|
g_operDataExFuns.GetRsvLen = OperatorGetRsLen;
|
|||
|
|
g_operDataExFuns.GetTrsFreeLen = OperatorGetSdFreeLen;
|
|||
|
|
g_operDataExFuns.Delay = DelayMs;
|
|||
|
|
|
|||
|
|
AddTriggerToList(1000, NULL, EthernetServiceRun); // 1000ms <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#elif (OPERATOR_PORT == COMM_USART1)
|
|||
|
|
InitUsart1(B115200, '8', 'N', '1');
|
|||
|
|
|
|||
|
|
g_operDataExFuns.SendCommData = Usart1SendData;
|
|||
|
|
g_operDataExFuns.GetCommData = Usart1GetData;
|
|||
|
|
g_operDataExFuns.GetRsvLen = Usart1GetRsLen;
|
|||
|
|
g_operDataExFuns.GetTrsFreeLen = Usart1GetSdFreeLen;
|
|||
|
|
g_operDataExFuns.Delay = DelayMs;
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
g_operDataExFuns.SendCommData = SendOperCommData;
|
|||
|
|
g_operDataExFuns.GetCommData = GetOperCommData;
|
|||
|
|
g_operDataExFuns.GetRsvLen = GetOperRsvLen;
|
|||
|
|
g_operDataExFuns.GetTrsFreeLen = GetOperTrsFreeLen;
|
|||
|
|
g_operDataExFuns.Delay = DelayMs;
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
void RequestFileData(u8 fileType, u8 fileIdx, u16 fileId, int datblockIdx)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
memset(pDatpkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
operpkt.requestDatBlock.cmdCode = DCMD_REQUEST_DAT;
|
|||
|
|
operpkt.requestDatBlock.fileType = fileType;
|
|||
|
|
operpkt.requestDatBlock.fileIdx = fileIdx;
|
|||
|
|
operpkt.requestDatBlock.fileId = fileId;
|
|||
|
|
operpkt.requestDatBlock.datBlockIdx = datblockIdx; // <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>1024<32>ֽ<EFBFBD>)
|
|||
|
|
|
|||
|
|
rslt = PacketAFLDP(&(operpkt.packet));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
// printf("error at call PacketAFLDP in SendMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
// printf("error at call SendAPacket in SendMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if (CUR_CORE_BOARD != CORE_BOARD_BOOT)
|
|||
|
|
|
|||
|
|
void OperatorTask(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rslt = GetANormalPacket(&g_operDataExFuns, pDatpkt);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
if (rslt > 0) // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
switch(operpkt.packet.fldp.cmd) // <20>Ȱ<EFBFBD><C8B0>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
case UCMD_GET_MC_INFO: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
printf("get mc info cmd, toggle=%d\r\n", operpkt.getMcInfo.toggle);
|
|||
|
|
rslt = CreateMcInfo(&operpkt, operpkt.getMcInfo.toggle);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_MC_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcInfo in OperatorTask UCMD_GET_MC_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_MC_STATUS: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
// printf("get mc status cmd, toggle=%d\r\n", operpkt.getMcStatus.toggle);
|
|||
|
|
rslt = CreateMcStatus(&operpkt, operpkt.getMcStatus.toggle);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_MC_STATUS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcStatus in OperatorTask UCMD_GET_MC_STATUS \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_MC_PARAS: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("get mc paras cmd\r\n");
|
|||
|
|
rslt = CreateMcParas(&operpkt, operpkt.getMcParas.paraType, operpkt.getMcParas.paraId);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
// int temp = GetMsSoftTimer();
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 10000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_MC_PARAS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcParas in OperatorTask UCMD_GET_MC_PARAS \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_MEM_DATA: // <20><>ȡ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
case UCMD_GET_SENSORS: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
|
{
|
|||
|
|
//printf("get mc sensors cmd\r\n");
|
|||
|
|
rslt = CreateSensorsStatus(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_SENSORS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateSensorsStatus in OperatorTask UCMD_GET_SENSORS \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_SENSORS_BMP: // <20><>ȡ<EFBFBD><C8A1>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λͼ
|
|||
|
|
{
|
|||
|
|
printf("get mc sensors bmp cmd\r\n");
|
|||
|
|
rslt = CreateSensorsBmp(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_SENSORS_BMP \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateSensorsBmp in OperatorTask UCMD_GET_SENSORS_BMP \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_FILE_INFO: // <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
rslt = CreateFileInfo(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateFileInfo in OperatorTask UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_TRANS_RESULT: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("1. get trans result cmd\r\n");
|
|||
|
|
rslt = CreateTransResult(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateTransResult in OperatorTask UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MC_CONFIG: // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MC_STATUS: // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
printf("SetMcStatus when stop\r\n");
|
|||
|
|
SetMcStatus(operpkt.setMcStatus.staCode, operpkt.setMcStatus.para);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MC_PARAS: // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("receive set mc para cmd\r\n");
|
|||
|
|
ReceiveMcParas(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MEM_DATA: // <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_FILE_PARAS: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ReceiveFileParas(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_FILE_EXDATA: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ReceiveFileExData(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_EXEC_PROGRESS: // <20><><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
SetExecProgress(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_INSTALLMENT: // <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
printf("set installment\r\n");
|
|||
|
|
rslt = SetInstallMent((char*)(operpkt.setInstallment.exData));
|
|||
|
|
|
|||
|
|
RefreshWorkTimeEn();
|
|||
|
|
|
|||
|
|
if (rslt >= 0)
|
|||
|
|
{
|
|||
|
|
ReportError(ERR_INSTALLMENT_OK); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<C3B3>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
ReportError(ERR_INSTALLMENT_FAIL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_ELAPSED_TIME: // <20><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
{
|
|||
|
|
printf("set elapsed, type=%d, time = %d\r\n", operpkt.setElapsedTime.type, operpkt.setElapsedTime.time);
|
|||
|
|
|
|||
|
|
if (g_workCtrl.cansetelapsed == 0)
|
|||
|
|
{
|
|||
|
|
u32 time;
|
|||
|
|
s32 val;
|
|||
|
|
time = operpkt.setElapsedTime.time;
|
|||
|
|
if (time > 5000*3600) // 5000Сʱ
|
|||
|
|
{
|
|||
|
|
time = 5000*3600;
|
|||
|
|
}
|
|||
|
|
time /= 60; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
val = time;
|
|||
|
|
val *= -1;
|
|||
|
|
|
|||
|
|
if (abs(val) < 60)
|
|||
|
|
{
|
|||
|
|
printf("close time=%d min\r\n", val);
|
|||
|
|
}
|
|||
|
|
else if (abs(val) < 1440)
|
|||
|
|
{
|
|||
|
|
s32 hour, min;
|
|||
|
|
hour = val / 60;
|
|||
|
|
min = val % 60;
|
|||
|
|
printf("close time=%d hour %d min\r\n", hour, min);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
s32 day, hour, min;
|
|||
|
|
day = val / 1440;
|
|||
|
|
hour = val % 1440;
|
|||
|
|
min = hour % 60;
|
|||
|
|
hour /= 60;
|
|||
|
|
printf("close time=%d day %d hour %d min\r\n", day, hour, min);
|
|||
|
|
}
|
|||
|
|
RefWorkableTimer(val);
|
|||
|
|
|
|||
|
|
RefreshWorkTimeEn();
|
|||
|
|
g_workCtrl.cansetelapsed = 1;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("has set elapsed already\r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
//---------------
|
|||
|
|
|
|||
|
|
case UCMD_ACT_BYHAND: // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ReportError(ERR_NONE);
|
|||
|
|
ControlByHand(&operpkt);
|
|||
|
|
|
|||
|
|
CleanBuffAfterAction();
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_MC_WORK: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ReportError(ERR_NONE);
|
|||
|
|
ControlWork(&operpkt);
|
|||
|
|
CleanBuffAfterAction();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_MOVE_TO: // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
|
{
|
|||
|
|
MoveFrameTo(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_MOVE_OFST: // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
MoveFrameAsOfst(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_START_TRANS: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
StartReceiveFile(&operpkt);
|
|||
|
|
SaveFileIdxFromDatafile();
|
|||
|
|
if (IsNewDatFile(0) == FALSE)
|
|||
|
|
{
|
|||
|
|
SetFileOkFlag(0);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_TRANS_FILE_DATA: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
u32 thistimer, oldtimer;
|
|||
|
|
oldtimer = GetMsSoftTimer();
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
int svrslt = SavePreProc();
|
|||
|
|
if (svrslt == 2 || svrslt < 0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
thistimer = GetMsSoftTimer();
|
|||
|
|
if ((thistimer - oldtimer) > 3000)
|
|||
|
|
{
|
|||
|
|
oldtimer = thistimer;
|
|||
|
|
SendStatus(1); // <20><><EFBFBD><EFBFBD>״̬,<2C><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}while(1);
|
|||
|
|
|
|||
|
|
ReceiveFileData(&operpkt);
|
|||
|
|
if (IsNewDatFile(0) == TRUE)
|
|||
|
|
{
|
|||
|
|
SetFileOkFlag(1); // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_FILE_LIST: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>
|
|||
|
|
{
|
|||
|
|
ResetFileList(&operpkt);
|
|||
|
|
SaveFileIdxFromDatafile();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_BOARD_UPDATE: // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
// <20><>ͷ<EFBFBD><CDB7>Э<EFBFBD><D0AD>,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<D2AA><D6AA><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ľڵ<C4BD>ID,ֻ<><D6BB><EFBFBD><EFBFBD>֪<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ͺͻ<CDBA>ͷ<EFBFBD>ż<EFBFBD><C5BC><EFBFBD>
|
|||
|
|
// <20><>ɫ<EFBFBD><C9AB>Э<EFBFBD><D0AD> <20><><EFBFBD><EFBFBD>֪<EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>
|
|||
|
|
printf("update ex board, protocolType=%d, nodetype=%d, nodeId=%d\r\n", operpkt.updateBoard.protocolType, operpkt.updateBoard.nodetype, operpkt.updateBoard.nodeId);
|
|||
|
|
StartBoardUpdate(operpkt.updateBoard.protocolType, operpkt.updateBoard.nodetype, operpkt.updateBoard.nodeId);
|
|||
|
|
DelayRef(1);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_MC_UPDATE: // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("receive updat mc cmd\r\n");
|
|||
|
|
DelayRef(100);
|
|||
|
|
StartAppUpdate(1); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_FILE_LIST: // <20><>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>
|
|||
|
|
{
|
|||
|
|
rslt = CreateFileList(&operpkt, g_datFile.fileIdxMap);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_FILE_LIST \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcStatus in OperatorTask UCMD_GET_FILE_LIST \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_DEF_PARA : // <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("receive set def para cmd\r\n");
|
|||
|
|
char * info = "set mc and wk def para";
|
|||
|
|
SendDebugInfo(info);
|
|||
|
|
WriteDefMcPara();
|
|||
|
|
WriteDefWkPara();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MVANGDEF_PARA: // <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ƕ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("receive set move angle def para cmd\r\n");
|
|||
|
|
char * info = "set mv angle def para";
|
|||
|
|
SendDebugInfo(info);
|
|||
|
|
WriteDefMvAngPara();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_HEADDEF_PARA: // <20><><EFBFBD>û<EFBFBD>ͷ<EFBFBD><CDB7>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("set head def para, nodetype=%d, id=%d\r\n", operpkt.setDefParas.nodetype, operpkt.setDefParas.id);
|
|||
|
|
char buf[1024];
|
|||
|
|
sprintf(buf, "set head def para, nodetype=%d", operpkt.setDefParas.nodetype);
|
|||
|
|
SendDebugInfo(&buf[0]);
|
|||
|
|
SetBoardNvPara(BN_PROTOCOL_HEAD, operpkt.setDefParas.nodetype, operpkt.setDefParas.id, 255, 0, 0);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_COLORDEF_PARA: // <20><><EFBFBD>û<EFBFBD>ɫ<EFBFBD><C9AB>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("set color def para, boardnum=%d\r\n", operpkt.setDefParas.id);
|
|||
|
|
char buf[1024];
|
|||
|
|
sprintf(buf, "set color def para, id=%d", operpkt.setDefParas.id);
|
|||
|
|
SendDebugInfo(&buf[0]);
|
|||
|
|
SetBoardNvPara(BN_PROTOCOL_COLOR, 0, operpkt.setDefParas.id, 255, 0, 0);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_TRA_BOARD: // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("traverse cmd, protocolType=%d, nodeId=%d, nodeType=%d, traNum=%d\r\n", operpkt.traverse.protocolType,
|
|||
|
|
operpkt.traverse.nodeId, operpkt.traverse.nodeType, operpkt.traverse.traNum);
|
|||
|
|
TraverseTask(operpkt.traverse.protocolType,
|
|||
|
|
operpkt.traverse.nodeId,
|
|||
|
|
operpkt.traverse.nodeType,
|
|||
|
|
operpkt.traverse.traNum);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_BOARD_VER: // <20><>ȡ<EFBFBD><C8A1>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
{
|
|||
|
|
RequestBoardVer();
|
|||
|
|
DelayRef(100);
|
|||
|
|
#if (MAX_SUPPORT_COLOR > 0)
|
|||
|
|
ColorControl * color = NULL;
|
|||
|
|
for (int i = 1; i < MAX_SUPPORT_COLOR+1; i++)
|
|||
|
|
{
|
|||
|
|
color = GetColorFromList(i+1);
|
|||
|
|
if (color->verFlag == 1)
|
|||
|
|
{
|
|||
|
|
color->verFlag = 0;
|
|||
|
|
rslt = CreateBoardVer(&operpkt, BN_PROTOCOL_COLOR, color->nodeId, 0, &color->regVal);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateBoardVer in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
#if (MAX_SUPPORT_HEAD > 0)
|
|||
|
|
HeadControl * head = NULL;
|
|||
|
|
for (int i = 1; i < MAX_SUPPORT_HEAD+1; i++)
|
|||
|
|
{
|
|||
|
|
head = GetHeadFromList(i+1);
|
|||
|
|
if (head->verFlag == 1)
|
|||
|
|
{
|
|||
|
|
head->verFlag = 0;
|
|||
|
|
rslt = CreateBoardVer(&operpkt, BN_PROTOCOL_HEAD, head->nodeId, head->nodeTye, &head->regVal);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateBoardVer in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
#if (MAX_SUPPORT_EXTIO > 0)
|
|||
|
|
ExtIOControl * extio = NULL;
|
|||
|
|
for (int i = 1; i < MAX_SUPPORT_EXTIO+1; i++)
|
|||
|
|
{
|
|||
|
|
extio = GetExtIOFromList(i+1);
|
|||
|
|
if (extio->verFlag == 1)
|
|||
|
|
{
|
|||
|
|
extio->verFlag = 0;
|
|||
|
|
rslt = CreateBoardVer(&operpkt, BN_PROTOCOL_EXTIO, extio->nodeId, 0, &extio->regVal);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateBoardVer in OperatorTask DCMD_SEND_BOARDVER \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
#if (RD_HEAD_PARA_NUM > 0)
|
|||
|
|
case UCMD_GET_HEAD_PARA: // <20><>ȡ<EFBFBD><C8A1>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
/*
|
|||
|
|
* 20220601 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ<EFBFBD>ID,ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>,ë<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD>Ͷ<EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD>ͷ<EFBFBD>ż<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int i, hdnm;
|
|||
|
|
hdnm = operpkt.boardPara.nodeId; // <20><>Ӧ<EFBFBD><D3A6>ͷ<EFBFBD><CDB7>
|
|||
|
|
for (i = 1; i < MAX_SUPPORT_HEAD+1; i++)
|
|||
|
|
{
|
|||
|
|
HeadControl * phd = GetHeadFromList(i+1);
|
|||
|
|
if (phd->nodeTye == operpkt.boardPara.nodeType)
|
|||
|
|
{// <20><><EFBFBD>㲥,<2C><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>͵ĵ<CDB5>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD>
|
|||
|
|
if (hdnm <= 1)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
hdnm--;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (i <= MAX_SUPPORT_HEAD) // <20>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD>Ľڵ<C4BD>
|
|||
|
|
{
|
|||
|
|
printf("read head=%d para\r\n", i);
|
|||
|
|
RequestAHeadNvPara(i); // <20><>ȡij<C8A1><C4B3><EFBFBD>ڵ<EFBFBD><DAB5>IJ<EFBFBD><C4B2><EFBFBD>
|
|||
|
|
DelayRef(100);
|
|||
|
|
HeadControl * head = GetHeadFromList(i+1);
|
|||
|
|
if (head->nvParaFlag == 1)
|
|||
|
|
{
|
|||
|
|
head->nvParaFlag = 0;
|
|||
|
|
int id = 0;;
|
|||
|
|
if (head->nodeTye == FLAT_EMB_HEAD)
|
|||
|
|
{
|
|||
|
|
id = 1;
|
|||
|
|
}
|
|||
|
|
else if (head->nodeTye == CHENILLE_HEAD)
|
|||
|
|
{
|
|||
|
|
id = 2;
|
|||
|
|
}
|
|||
|
|
else if (head->nodeTye == COIL_HEAD)
|
|||
|
|
{
|
|||
|
|
id = 3;
|
|||
|
|
}
|
|||
|
|
rslt = CreateHeadBoardPara(&operpkt, i, operpkt.boardPara.nodeType, GetBoardNvPara(id));
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
printf("send head para\r\n");
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask DCMD_SEND_HEADPARA \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateHeadBoardPara in OperatorTask DCMD_SEND_HEADPARA \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("receive err\r\n");
|
|||
|
|
ReportError(ERR_READ_HEAD_PARA);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else // <20><><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("not find node\r\n");
|
|||
|
|
ReportError(ERR_READ_HEAD_PARA);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_COLOR_PARA: // <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD>ư<EFBFBD><C6B0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (operpkt.boardPara.nodeId != 0) // <20><>֧<EFBFBD>ֹ㲥<D6B9><E3B2A5>ȡ
|
|||
|
|
{
|
|||
|
|
ColorControl * color = GetColorFromList(operpkt.boardPara.nodeId+1);
|
|||
|
|
if (color != NULL)
|
|||
|
|
{
|
|||
|
|
color->refNvPara = 1;
|
|||
|
|
DelayRef(100);
|
|||
|
|
if (color->nvParaFlag == 1)
|
|||
|
|
{
|
|||
|
|
color->nvParaFlag = 0;
|
|||
|
|
int id = 0;;
|
|||
|
|
if (operpkt.boardPara.nodeId == 2)
|
|||
|
|
{// ë<><C3AB><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>
|
|||
|
|
id = 4;
|
|||
|
|
}
|
|||
|
|
rslt = CreateColorBoardPara(&operpkt, operpkt.boardPara.nodeId, GetBoardNvPara(id));
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
printf("send color para, nodeid=%d\r\n", operpkt.boardPara.nodeId);
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_COLOR_PARA \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateColorBoardPara in OperatorTask UCMD_GET_COLOR_PARA \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("receive err\r\n");
|
|||
|
|
ReportError(ERR_READ_COLOR_PARA);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("not support broadcast read color para\r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
case UCMD_GET_HEAD_NVPARAS: // ѡ<><D1A1><EFBFBD>Զ<EFBFBD>ȡ<EFBFBD><C8A1>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|||
|
|
{// <20>ɶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
printf("get head type=%d id=%d nvparaid=%d\r\n", operpkt.boardPara.nodeType, operpkt.boardPara.nodeId, operpkt.boardPara.paraid);
|
|||
|
|
u32 buf[32] = {0};
|
|||
|
|
int rslt = RequestHeadNvParas(operpkt.boardPara.nodeType, operpkt.boardPara.nodeId, operpkt.boardPara.paraid, &buf[0]);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = CreateHeadNvParas(&operpkt, operpkt.boardPara.nodeType, operpkt.boardPara.nodeId, operpkt.boardPara.paraid, (u8*)(&buf[0]));
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
printf("send head nv paras\r\n");
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_HEAD_NVPARAS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateHeadNvParas in OperatorTask UCMD_GET_HEAD_NVPARAS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("read head nv paras error, rslt=%d\r\n", rslt);
|
|||
|
|
ReportError(ERR_READ_HEAD_PARA);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_SET_HEAD_PARA: // <20><><EFBFBD>û<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("set head para, nodetype=%d, nodeId=%d\r\n", operpkt.boardPara.nodeType, operpkt.boardPara.nodeId);
|
|||
|
|
BoardFilePacketCtrl boardpkt;
|
|||
|
|
ParaDataFromOperToCan(BN_PROTOCOL_HEAD, &operpkt, &boardpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_SET_COLOR_PARA: // <20><><EFBFBD>û<EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>ư<EFBFBD><C6B0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("set color para, boardnum=%d\r\n", operpkt.boardPara.nodeId);
|
|||
|
|
BoardFilePacketCtrl boardpkt;
|
|||
|
|
ParaDataFromOperToCan(BN_PROTOCOL_COLOR, &operpkt, &boardpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_SET_HEAD_NVPARA: // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("set head type=%d id=%d paraid=%d nvpara\r\n", operpkt.boardPara.nodeType, operpkt.boardPara.nodeId, operpkt.boardPara.paraid);
|
|||
|
|
// SetHeadNvPara(operpkt.boardPara.nodeType, operpkt.boardPara.nodeId, operpkt.boardPara.paraid, (u32*)(&operpkt.boardPara.exData));
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// SavePreProc();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CleanBuffAfterAction(void)
|
|||
|
|
{
|
|||
|
|
int ret;
|
|||
|
|
int temp, timer;
|
|||
|
|
|
|||
|
|
timer = GetMsSoftTimer();
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
ret = ReadBuffEmpty(&g_operDataExFuns); // <20><><EFBFBD>ս<EFBFBD><D5BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (ret == 0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("ReadBuffEmpty rslt=%d\r\n", ret);
|
|||
|
|
}
|
|||
|
|
DelayRef(1);
|
|||
|
|
temp = GetMsSoftTimer();
|
|||
|
|
if (temp - timer > 10)
|
|||
|
|
{
|
|||
|
|
printf("CleanBuffAfterAction timout\r\n");
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}while(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
void SendMcStatus(int force)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
if (IsStatusChanged() != 0 || force != 0)
|
|||
|
|
{
|
|||
|
|
rslt = CreateMcStatus(&operpkt, 0);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
// printf("SendMcStatus\r\n");
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
// printf("error at call SendAPacket in SendMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcStatus in SendMcStatus\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SetLightStaByCode(g_workCtrl.cursta.errorCode);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// --------------------------------------------
|
|||
|
|
|
|||
|
|
int IsSocketConnected(void)
|
|||
|
|
{
|
|||
|
|
#if (OPERATOR_PORT == COMM_ETHERNET)
|
|||
|
|
if (g_pOperatorSocket->status == STA_CONNECT)
|
|||
|
|
{
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int IsNewOperCmd(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
rslt = GetANormalPacket(&g_operDataExFuns, pDatpkt);
|
|||
|
|
if (rslt > 0) // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
#if (OPERATOR_PORT == COMM_ETHERNET)
|
|||
|
|
if (IsSocketConnected() != TRUE)
|
|||
|
|
{
|
|||
|
|
// return TRUE;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return FALSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void OperatorTaskWhenRun(int revfile)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rslt = GetANormalPacket(&g_operDataExFuns, pDatpkt);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
if (rslt > 0) // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
switch(operpkt.packet.fldp.cmd) // <20>Ȱ<EFBFBD><C8B0>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
case UCMD_GET_MC_STATUS: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
printf("get mc status cmd when run\r\n");
|
|||
|
|
rslt = CreateMcStatus(&operpkt, operpkt.getMcStatus.toggle);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 0);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTaskWhenRun UCMD_GET_MC_STATUS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcStatus in OperatorTaskWhenRun UCMD_GET_MC_STATUS \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_MC_PARAS: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("get mc paras cmd\r\n");
|
|||
|
|
rslt = CreateMcParas(&operpkt, operpkt.getMcParas.paraType, operpkt.getMcParas.paraId);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
// int temp = GetMsSoftTimer();
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 10000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_MC_PARAS \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcParas in OperatorTask UCMD_GET_MC_PARAS \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_MC_STATUS: // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
printf("SetMcStatus when run\r\n");
|
|||
|
|
SetMcStatus(operpkt.setMcStatus.staCode, operpkt.setMcStatus.para);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_MC_WORK: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("get control work cmd when run\r\n");
|
|||
|
|
ControlWorkWhenWorking(&operpkt);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_FILE_INFO: // <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
rslt = CreateFileInfo(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTaskWhenRun UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateFileInfo in OperatorTaskWhenRun UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_TRANS_RESULT: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
printf("3. get trans result cmd\r\n");
|
|||
|
|
rslt = CreateTransResult(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTaskWhenRun UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateTransResult in OperatorTaskWhenRun UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_FILE_PARAS: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
ReceiveFileParas(&operpkt);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_START_TRANS: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
StartReceiveFile(&operpkt);
|
|||
|
|
SaveFileIdxFromDatafile();
|
|||
|
|
if (IsNewDatFile(0) == FALSE)
|
|||
|
|
{
|
|||
|
|
SetFileOkFlag(0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_TRANS_FILE_DATA: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
ReceiveFileData(&operpkt);
|
|||
|
|
if (IsNewDatFile(0) == TRUE)
|
|||
|
|
{
|
|||
|
|
SetFileOkFlag(1); // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ձ<EFBFBD>־
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_SET_FILE_LIST: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>
|
|||
|
|
{
|
|||
|
|
ResetFileList(&operpkt);
|
|||
|
|
SaveFileIdxFromDatafile();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_SET_EXEC_PROGRESS: // <20><><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
SetExecProgress(&operpkt);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
printf("get cmd = 0x%x when run\r\n", operpkt.packet.fldp.cmd);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (revfile == 1)
|
|||
|
|
{
|
|||
|
|
// SavePreProc();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int ReceiveMcParas(OperPacket * pPkt)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
rslt = 0;
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-----------
|
|||
|
|
|
|||
|
|
//printf("ReceiveParas type = %d, exlen=%d\r\n", pPkt->setParas.paraType, pPkt->setParas.exLen);
|
|||
|
|
|
|||
|
|
if (pPkt->setParas.paraType == SEW_MCPARA_MACH)
|
|||
|
|
{
|
|||
|
|
if (pPkt->setParas.exLen == sizeof(g_mcPara))
|
|||
|
|
{
|
|||
|
|
memcpy((u8*)(&g_mcPara), pPkt->setParas.exData, sizeof(g_mcPara));
|
|||
|
|
CheckMcParaRange();
|
|||
|
|
SaveMcPara();
|
|||
|
|
RefreshParas(PARA_MC_VALID);
|
|||
|
|
SetNewParasFlag(PARA_MC_VALID);
|
|||
|
|
rslt = 0;
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.exLen == sizeof(u32))
|
|||
|
|
{
|
|||
|
|
SetAMcPara(pPkt->setParas.paraId, *((u32*)(pPkt->setParas.exData)));
|
|||
|
|
SaveMcPara();
|
|||
|
|
RefreshParas(PARA_MC_VALID);
|
|||
|
|
SetNewParasFlag(PARA_MC_VALID);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.paraType == SEW_MCPARA_WORK)
|
|||
|
|
{
|
|||
|
|
if (pPkt->setParas.exLen == sizeof(g_wkPara))
|
|||
|
|
{
|
|||
|
|
memcpy((u8*)(&g_wkPara), pPkt->setParas.exData, sizeof(g_wkPara));
|
|||
|
|
CheckWkParaRange();
|
|||
|
|
SaveWkPara();
|
|||
|
|
RefreshParas(PARA_WK_VALID);
|
|||
|
|
SetNewParasFlag(PARA_WK_VALID);
|
|||
|
|
rslt = 0;
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.exLen == sizeof(u32))
|
|||
|
|
{
|
|||
|
|
SetAWkPara(pPkt->setParas.paraId, *((u32*)(pPkt->setParas.exData)));
|
|||
|
|
SaveWkPara();
|
|||
|
|
RefreshParas(PARA_WK_VALID);
|
|||
|
|
SetNewParasFlag(PARA_WK_VALID);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.paraType == EMB_MVSTANG_PARA) // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (pPkt->setParas.exLen == sizeof(g_angPara))
|
|||
|
|
{
|
|||
|
|
memcpy((u8*)(&g_angPara), pPkt->setParas.exData, sizeof(g_angPara));
|
|||
|
|
SaveAngPara();
|
|||
|
|
rslt = 0;
|
|||
|
|
printf("receive angle para\r\n");
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.exLen == sizeof(u16))
|
|||
|
|
{
|
|||
|
|
SetAAnglePara(pPkt->setParas.paraId, *((u16*)pPkt->setParas.exData));
|
|||
|
|
SaveAngPara();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (pPkt->setParas.paraType == EMB_PATCH_DATA_IDX) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>(<28>廨<EFBFBD><E5BBA8>)
|
|||
|
|
{
|
|||
|
|
if (pPkt->setParas.exLen == 1024)
|
|||
|
|
{
|
|||
|
|
memcpy((u8*)(&g_patchData), pPkt->setParas.exData, sizeof(g_patchData));
|
|||
|
|
printf("receive patch data (idx) para\r\n");
|
|||
|
|
rslt = 0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("other para\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CreateMcParas(OperPacket * pPkt, int type, int id)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pPkt->sendMcParas.cmdCode = DCMD_SEND_MC_PARAS;
|
|||
|
|
pPkt->sendMcParas.paraType = type;
|
|||
|
|
pPkt->sendMcParas.paraId = id;
|
|||
|
|
if (id == 0)
|
|||
|
|
{
|
|||
|
|
if (type == SEW_MCPARA_MACH)
|
|||
|
|
{
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&g_mcPara), sizeof(g_mcPara));
|
|||
|
|
}
|
|||
|
|
else if (type == SEW_MCPARA_WORK)
|
|||
|
|
{
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&g_wkPara), sizeof(g_wkPara));
|
|||
|
|
}
|
|||
|
|
else if (type == EMB_MVSTANG_PARA) // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ǶȲ<C7B6><C8B2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&g_angPara), sizeof(g_angPara));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (type == SEW_MCPARA_MACH)
|
|||
|
|
{
|
|||
|
|
u32 val = GetAMcPara(id);
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&val), sizeof(u32));
|
|||
|
|
}
|
|||
|
|
else if (type == SEW_MCPARA_WORK)
|
|||
|
|
{
|
|||
|
|
u32 val = GetAWkPara(id);
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&val), sizeof(u32));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcParas\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
|
|||
|
|
__WEAK int CreateMemDatList(OperPacket * pPkt, u32 begAddr, u16 rdSize){return 0;};
|
|||
|
|
__WEAK int SetMemDats(u32 setAddr, u8 * buff, u16 len){return 0;};
|
|||
|
|
|
|||
|
|
int CreateMcInfoWhenBoot(OperPacket * pPkt, int toggle)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
MCInfo info;
|
|||
|
|
CpuId id;
|
|||
|
|
u32 cpuid;
|
|||
|
|
|
|||
|
|
if (pPkt == NULL)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(pPkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
memset(&info, 0, sizeof(MCInfo));
|
|||
|
|
|
|||
|
|
pPkt->sendMcInfo.cmdCode = DCMD_SEND_MC_INFO;
|
|||
|
|
pPkt->sendMcInfo.toggle = (u16)toggle;
|
|||
|
|
|
|||
|
|
GetVersionStr(info.softwareVerStr); // <20><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>Ϣ
|
|||
|
|
|
|||
|
|
GetBuildStr(info.buildInfoStr); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|
|||
|
|
// <20>忨ID<49><44>Ϣ
|
|||
|
|
cpuid = 0;
|
|||
|
|
GetCpuID(&id);
|
|||
|
|
cpuid += id.dword.dword1;
|
|||
|
|
cpuid += id.dword.dword2;
|
|||
|
|
cpuid += id.dword.dword3;
|
|||
|
|
cpuid += id.dword.dword4;
|
|||
|
|
sprintf(info.boardId, "CPUID: %u", cpuid);
|
|||
|
|
|
|||
|
|
printf("create system info as follow:\r\n");
|
|||
|
|
|
|||
|
|
printf("%s\r\n", info.softwareVerStr); // <20><><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
printf("%s\r\n", info.buildInfoStr); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
printf("%s\r\n", info.boardId); // <20>忨ID
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pPkt->packet), (u8*)(&(info)), sizeof(MCInfo));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in CreateMcInfoWhenBoot\r\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void OperatorTaskWhenBoot(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
OperPacket operpkt;
|
|||
|
|
DataPacket* pDatpkt = (DataPacket*)(&operpkt);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rslt = GetANormalPacket(&g_operDataExFuns, pDatpkt);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
if (rslt > 0) // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
switch(operpkt.packet.fldp.cmd) // <20>Ȱ<EFBFBD><C8B0>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
case UCMD_GET_MC_INFO: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
printf("get mc info cmd, toggle=%d\r\n", operpkt.getMcInfo.toggle);
|
|||
|
|
rslt = CreateMcInfoWhenBoot(&operpkt, operpkt.getMcInfo.toggle);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTaskWhenBoot UCMD_GET_MC_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateMcInfo in OperatorTaskWhenBoot UCMD_GET_MC_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_MEM_DATA: // <20><>ȡ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
rslt = CreateMemDatList(&operpkt, operpkt.getMemData.begAddr, operpkt.getMemData.rdSize);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call OperatorTaskWhenBoot in OperatorTask UCMD_GET_MEM_DATA \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call OperatorTaskWhenBoot in OperatorTask UCMD_GET_MEM_DATA \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_SET_MEM_DATA: // <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
SetMemDats(operpkt.setMemData.begAddr, operpkt.setMemData.exData, operpkt.setMemData.exLen);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case UCMD_GET_FILE_INFO: // <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
rslt = CreateFileInfo(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateFileInfo in OperatorTask UCMD_GET_FILE_INFO \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_GET_TRANS_RESULT: // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
printf("2. get trans result cmd\r\n");
|
|||
|
|
rslt = CreateTransResult(&operpkt);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, pDatpkt, 1000);
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call SendAPacket in OperatorTask UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("error at call CreateTransResult in OperatorTask UCMD_GET_TRANS_RESULT \r\n");
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case UCMD_START_TRANS: // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
StartReceiveFile(&operpkt);
|
|||
|
|
// SaveFileIdxFromDatafile();
|
|||
|
|
break;
|
|||
|
|
case UCMD_TRANS_FILE_DATA: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ReceiveFileData(&operpkt);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case UCMD_MC_UPDATE: // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
printf("get update cmd\r\n");
|
|||
|
|
StartAppUpdate(0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//------------------------------------------------------
|
|||
|
|
|
|||
|
|
int SendDebugInfo(char * pStr)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
|
|||
|
|
OperPacket pkt;
|
|||
|
|
|
|||
|
|
memset(&pkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
pkt.sendDebugInfo.cmdCode = DCMD_SEND_DEBUG_INFO;
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pkt.packet), (u8*)(pStr), strlen(pStr));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in SendDebugInfo\r\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, (DataPacket *)(&pkt), 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int SendFileParas(int beginX, int beginY)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
OperPacket pkt;
|
|||
|
|
DataFilePara newPara;
|
|||
|
|
|
|||
|
|
memset(&pkt, 0, LEN_NORMAL_PACKET);
|
|||
|
|
|
|||
|
|
newPara.anchorX = beginX;
|
|||
|
|
newPara.anchorY = beginY;
|
|||
|
|
newPara.beginX = beginX;
|
|||
|
|
newPara.beginY = beginY;
|
|||
|
|
|
|||
|
|
pkt.setFileParas.cmdCode = UCMD_SET_FILE_PARAS;
|
|||
|
|
|
|||
|
|
rslt = PacketAVLDP(&(pkt.packet), (u8*)(&newPara), sizeof(DataFilePara));
|
|||
|
|
if (rslt != 0)
|
|||
|
|
{
|
|||
|
|
printf("error at call PacketAVLDP in SendFileParas\r\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
rslt = SendAPacket(&g_operDataExFuns, (DataPacket *)(&pkt), 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rslt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|