📄 trans_process.lst
字号:
787 6 heart_num = 0;
788 6 }
789 5 }
790 4 else
791 4 {
792 5 sbuf.valid[0] = 0;
793 5 gprs_reset(6);
794 5 }
795 4 }
796 3
C51 COMPILER V7.09 TRANS_PROCESS 09/16/2008 09:24:30 PAGE 14
797 3 return;
798 3 }
799 2
800 2 if (sbuf.valid[1] == 1)/*应答发送*/
801 2 {
802 3 ptr = sbuf.buf[1];
803 3 head_info = (struct _mess_head_info *)(sbuf.buf[1]);
804 3 len = (Uchar)(head_info->mess_length >> 8);
805 3 if (udp_send(sbuf.buf[1],len) == 0)
806 3 {
807 4 sbuf.valid[1] = 0;
808 4 }
809 3
810 3 return;
811 3 }
812 2
813 2 if (sbuf.valid[2] == 1)/*需要等待应答消息*/
814 2 {
815 3 ptr = sbuf.buf[2];
816 3 head_info = (struct _mess_head_info *)(sbuf.buf[2]);
817 3 len = (Uchar)((head_info->mess_length) >> 8);
818 3 if(udp_send(ptr,len) == 0);
819 3 {
820 4 memcpy(sbuf.buf[0], sbuf.buf[2], len +12 );
821 4 sbuf.valid[0] = 1;
822 4 trans_num = 0;
823 4 retry_num = 0;
824 4
825 4 sbuf.valid[2] = 0;
826 4 heart_num = 0;
827 4 }
828 3
829 3 return;
830 3 }
831 2
832 2 if (heart_num >= heart_send_number)/*心跳包*/
833 2 {
834 3 make_heartbeat_message();
835 3 head_info = (struct _mess_head_info *)(sbuf.buf[5]);
836 3 ptr = sbuf.buf[5];
837 3 len = (Uchar)((head_info->mess_length >> 8));
838 3 if(udp_send(ptr,len) == 0)
839 3 {
840 4 heart_num = 0;
841 4 memcpy(sbuf.buf[0], sbuf.buf[5], len +12 );
842 4 sbuf.valid[0] = 1;
843 4 trans_num = 0;
844 4 retry_num = 0;
845 4 }
846 3
847 3 return;
848 3 }
849 2 }
850 1
851 1 }
852
853
854 /***xhb add***/
855 void res_requir_telephone_list_message(char *mess_num)
856 {
857 1 RES_GENERAL *gprs_info;
858 1 char *ptr;
C51 COMPILER V7.09 TRANS_PROCESS 09/16/2008 09:24:30 PAGE 15
859 1
860 1 gprs_info = (RES_GENERAL *) sbuf.buf[1];
861 1 memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
862 1 gprs_info->mess_head.mess_version = 2;
863 1 gprs_info->mess_head.mess_reserve = 0;
864 1 gprs_info->mess_head.mess_type = (Word)(RES_GET_TELEPHONE_LIST);
865 1 gprs_info->mess_head.mess_length = 231;
866 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
867 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
868 1
869 1 ptr = gprs_info->memo;
870 1 memcpy(ptr, mess_num, 4);
871 1 ptr += 4;
872 1
873 1 get_device_id(ptr);
874 1 ptr += 3;
875 1
876 1 get_bus_id(ptr);
877 1 ptr += 7;
878 1
879 1 *ptr ++ = 0;
880 1
881 1 get_telephone_list(ptr);
882 1
883 1 sbuf.valid[1] = 1;
884 1 }
885
886 void res_configure_telephone_list_message(char *mess_num)
887 {
888 1 RES_GENERAL *gprs_info;
889 1 char *ptr;
890 1
891 1 gprs_info = (RES_GENERAL *) sbuf.buf[1];
892 1 memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
893 1 gprs_info->mess_head.mess_version = 2;
894 1 gprs_info->mess_head.mess_reserve = 0;
895 1 gprs_info->mess_head.mess_type = (Word)(RES_SET_TELEPHONE_LIST);
896 1 gprs_info->mess_head.mess_length = 231;
897 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
898 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
899 1
900 1 ptr = gprs_info->memo;
901 1 memcpy(ptr, mess_num, 4);
902 1 ptr += 4;
903 1
904 1 get_device_id(ptr);
905 1 ptr += 3;
906 1
907 1 get_bus_id(ptr);
908 1 ptr += 7;
909 1
910 1 *ptr ++ = 0;
911 1
912 1 sbuf.valid[1] = 1;
913 1 }
914
915 /*以下代码,在一体式中暂不考虑*/
916 /*******************************cj add****************/
917 //远程下载程序应答
918 #define UPDATA_TERM 2//更新终端
919 #define UPDATA_HOST 1//更新主机
920 /***********cj add***************/
C51 COMPILER V7.09 TRANS_PROCESS 09/16/2008 09:24:30 PAGE 16
921 /*type:1 为发送;2为接收
922 ***********************************/
923 Uint16 gProgramCurNum = 0;
924 Uint32 gtestremoteAddrPro= 0;
925 void res_update_program(Uchar* ptr)
926 {
927 1 PACKET_UPDATEPRO* pPacket;
928 1 U16 nLen;
929 1 U32 addr;
930 1 RES_GENERAL *gprs_info;
931 1 U8* tmpPtr;
932 1 Byte nValue = KO;
933 1 //先将程序写如E2
934 1 pPacket = (PACKET_UPDATEPRO*)ptr;
935 1 nLen = Le16(pPacket->len);
936 1 //把信息打印出来
937 1 if (UPDATA_HOST == pPacket->programType)
938 1 {
939 2 if (gProgramCurNum != pPacket->curPacket)
940 2 {
941 3
942 3 addr = pPacket->startAddr[0]+(pPacket->startAddr[1]<<8)+(pPacket->startAddr[2]<<16)+(pPacket->
-startAddr[3]<<24);
943 3 // addr = ;
944 3 //是否需要置相关的位,用来表示更新是否允许完成?
945 3 if (pPacket->totalPacket == pPacket->curPacket)
946 3 {
947 4 //最后一个包
948 4 if (nLen >= (sizeof(PACKET_UPDATEPRO)-6))
949 4 {
950 5 nValue = write_programtoFlash(ptr+sizeof(PACKET_UPDATEPRO), (nLen-sizeof(PACKET_UPDATE
-PRO)+6), gtestremoteAddrPro, NFUPDATE_REMOTE);
951 5 }
952 4 //将更新时间保存,启动更新任务
953 4 if (OK == nValue)
954 4 write_updatetime(ptr+nLen+6);
955 4 }
956 3 else
957 3 {
958 4 //中间的一个包
959 4 if (nLen > (sizeof(PACKET_UPDATEPRO)-12))
960 4 nValue = write_programtoFlash(ptr+sizeof(PACKET_UPDATEPRO), (nLen-sizeof(PACKET_UPDATE
-PRO)+12), gtestremoteAddrPro, NFUPDATE_REMOTE);
961 4 if (OK == nValue)
962 4 gtestremoteAddrPro += 256;
963 4 }
964 3 }
965 2 else
966 2 nValue = OK;
967 2
968 2
969 2 //生成响应包
970 2 if (OK == nValue)
971 2 {
972 3 gProgramCurNum = pPacket->curPacket;
973 3 gprs_info = (RES_GENERAL *) sbuf.buf[REMOTE_BUFFER_ID];
974 3 memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
975 3 gprs_info->mess_head.mess_version = 2;
976 3 gprs_info->mess_head.mess_reserve = 0;
977 3 gprs_info->mess_head.mess_type = (Word)(RES_UPDATE_PROGRAM);
978 3 gprs_info->mess_head.mess_length = sizeof(PACKET_UPDATEPRO)-sizeof(struct _mess_head_info);
979 3 swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
C51 COMPILER V7.09 TRANS_PROCESS 09/16/2008 09:24:30 PAGE 17
980 3 swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
981 3
982 3 tmpPtr = gprs_info->memo;
983 3 memcpy(tmpPtr, pPacket->seq, 4);
984 3 tmpPtr += 4;
985 3 *tmpPtr++ = UPDATA_HOST;
986 3
987 3 get_bus_id(tmpPtr);
988 3 tmpPtr += 7;
989 3
990 3 memcpy(tmpPtr, (Uchar*)&(pPacket->totalPacket), 2);
991 3 tmpPtr += 2;
992 3 memcpy(tmpPtr, (Uchar*)&(pPacket->curPacket), 2);
993 3 tmpPtr += 2;
994 3 memcpy(tmpPtr, (Uchar*)&(pPacket->startAddr), 4);
995 3 tmpPtr += 2;
996 3 sbuf.valid[REMOTE_BUFFER_ID] = 1;
997 3 }
998 2 }
999 1 }
1000
1001 /*查询广告通告应答*/
1002 /**********************
1003 *pnum:消息ID
1004 *type:值取LED_QUERYNOTICE和LED_QUERYADVERTICE
1005 *seq:值为LED_QUERYADVERTICE时,取值为1-20
1006 *pContent:内容
1007 *len:内容的长度
1008 **********************/
1009 void res_query_notice(Byte* pnum, Byte type, Byte seq, Byte* pContent, Byte len)
1010 {
1011 1 RES_QUERYNOTICE_STRUCT* gprs_info;
1012 1 Byte* pTmpPtr;
1013 1 gprs_info = (RES_QUERYNOTICE_STRUCT *) sbuf.buf[1];
1014 1 memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
1015 1 gprs_info->mess_head.mess_version = 2;
1016 1 gprs_info->mess_head.mess_reserve = 0;
1017 1 gprs_info->mess_head.mess_type = (Word)(RES_QUERYNOTICE);
1018 1 memcpy(&(gprs_info->res_messageid), pnum, 4);
1019 1 get_bus_id(gprs_info->bus_id);
1020 1 gprs_info->seq = seq;
1021 1 gprs_info->type = type;
1022 1 get_term_data(gprs_info->date);
1023 1 get_term_time(gprs_info->time);
1024 1 pTmpPtr = sbuf.buf[1]+sizeof(RES_QUERYNOTICE_STRUCT);
1025 1 if (len > 0)
1026 1 memcpy(pTmpPtr, pContent, len);
1027 1 gprs_info->mess_head.mess_length = len+sizeof(RES_QUERYNOTICE_STRUCT)-12;
1028 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
1029 1 swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
1030 1 sbuf.valid[1] = 1;
1031 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 10220 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = 2108 248
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.09 TRANS_PROCESS 09/16/2008 09:24:30 PAGE 18
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -