WORD API_CmdAnswer(PACKET * P, WORD _Error)
WORD API_CmdAnswer(PACKET * P, WORD _Error) { REAL_TIME mRtccSw; DWORD_VAL dwvTemp; WORD_VAL wvTemp; WORD w; if(_Error == ERR_OK){ for(w=0; w<MAX_EVENT_ALL; w++){ if(TableEventDataPointer[w].Event.Val == (P->Command.Val | ANSWER_FLAG)) break; } if(P->DataLength.Val < MAX_EVENT_DATA && w < MAX_EVENT_ALL){ API_PutEvent(P->Receiver.Val, P->Command.Val | ANSWER_FLAG, P->bData, P->DataLength.Val); } if( API_SendPacket( P->Receiver.Val, P->Sender.Val, P->Command.Val | ANSWER_FLAG, P->bData, P->DataLength.Val ) ) { API_Error( Packet.Receiver.Val, ERR_CmdAnswer_SEND_DATA ); return ERR_CmdAnswer_SEND_DATA; } } else{ mRtccSw = API_GetRTCC(); P->DataLength.Val = 11; dwvTemp.Val=mRtccSw.Time.Days; memcpy_back(&P->bData[0], &dwvTemp.byte.MB, 4); P->bData[4]=mRtccSw.Time.Hour; P->bData[5]=mRtccSw.Time.Minute; P->bData[6]=mRtccSw.Time.Second; wvTemp.Val = mRtccSw.Time.Thousandth; memcpy_back(&P->bData[7], &wvTemp.byte.HB, 2); wvTemp.Val= _Error; memcpy_back(&P->bData[9], &wvTemp.byte.HB, 2); if(API_SendPacket(P->Receiver.Val, P->Sender.Val, P->Command.Val | ERROR_FLAG | ANSWER_FLAG, P->bData, P->DataLength.Val)){ API_Error( Packet.Receiver.Val, ERR_CmdAnswer_SEND_DATA ); return ERR_CmdAnswer_SEND_DATA; } } return ERR_OK; }