void rfidTestStart(int com) { int i; g_labelNum = 0; g_pageNo = 0; pageSetCardNum(0); for (i = 0; i < LINE_PER_PAGE; i++) { pageClearLine(i); } openCom(com, BAUDRATE_9600); g_rfidTestOn = 1; }
tcmRet initZwave ( int usbComNum ) { if ( -1 == openCom ( usbComNum ) ) { return TCMRET_FAILURE; } pthread_create ( &gzwave_rx_thread, NULL, process_zwave_rx, NULL ); pthread_create ( &gzwave_apipoll_thread, NULL, process_zwave_apipoll, NULL ); pthread_create ( &gzwave_timer_thread, NULL, process_timer, NULL ); pthread_create ( &gzwave_rxdata_thread, NULL, process_exe_callback, NULL); DONGLE_INFO nodeinfo; int a; for ( a = 0; a < ZW_MAX_NODES; a++ ) { device_info.node_info_table[a].id = 0; } if ( API_Initial ( &device_info ) == INIT_FAIL ) if ( API_Initial ( &device_info ) == INIT_FAIL ) if ( API_Initial ( &device_info ) == INIT_FAIL ) { tcmLog_error ( "Initial fail\n" ); return TCMRET_FAILURE; } tcmLog_debug ( "There are %d nodes in dongle totally", device_info.total_device_number ); for ( a = 0; a < ZW_MAX_NODES; a++ ) { if ( device_info.node_info_table[a].id != 0 ) { tcmLog_debug ( "NodeID %d, NodeType %d", device_info.node_info_table[a].id, device_info.node_info_table[a].type ); } } return TCMRET_SUCCESS; }
int main(int argc, char *argv[]) { // ASCII header printf(" [===============================================]\r\n"); printf(" | FLYSKY FS-i6 CUSTOM FIRMWARE UPLOADER |\r\n"); printf(" | by Thom |\r\n"); printf(" | |\r\n"); printf(" | check out my blog for more: |\r\n"); printf(" | basejunction.wordpress.com |\r\n"); printf(" [===============================================]\r\n\r\n"); printf("\n!!! Please make sure the firmware file comes from basejunction.wordpress.com !!!\n\n"); HANDLE hdlr = NULL; //port handle int n_com=1; int n_baudrate=115200; char arg1[256],arg2[256],arg3[256],arg4[256],arg5[256]; char cmd[256]=""; if(argc>=2) n_com=(int)strtol(argv[1],NULL,10); if(argc>=3) n_baudrate=(int)strtol(argv[2],NULL,10); //init printf("Opening COM%d at %d bauds : ",n_com,n_baudrate); if(openCom(n_com,n_baudrate,&hdlr)) printf("SUCCESS"); else printf("FAILED - verify your COM port number and baudrate settings"); printf("\n\n"); //main loop do { printf(">> "); fgets(cmd, sizeof(cmd), stdin); sscanf(cmd,"%s %s %s %s %s",arg1,arg2,arg3,arg4,arg5); if(!strcmp(arg1,"help")|| !strcmp(arg1,"h")) { printf("-- open [port] [baudrate] : open com port number [port] at [baudrate] bauds\n"); printf("-- readb : read byte \n"); printf("-- readf : read frame \n"); printf("-- sendb [format] [byte] : send [byte] with [format{-b,-d,-h}]\n"); printf("-- write [filename] [offset:h] [nbytes:d] : write [nbytes](decimal) bytes page at [offset](hex)\n"); printf("-- flash [filename] : program [filename] firmware into TX flash memory (bootloader untouched)\n"); printf("-- ping : send a ping request\n"); printf("-- reset : send a reset TX request\n"); printf("-- quit : quit the updater\n"); } else if(!strcmp(arg1,"readb")) { unsigned char byte=0; if(readByte(&byte,&hdlr)) printf("%x \n",byte); else printf("ERROR - reading byte from serial buffer\n"); } else if(!strcmp(arg1,"readf")) { unsigned short size=0; unsigned short checksum=0; unsigned char frame[256]; if(!readFramedbg(&size,&checksum,frame,&hdlr)) printf("ERROR - reading frame from serial buffer\n"); if(!sumcheck(frame,size)) printf("ERROR - checksum mismatch\n"); } else if(!strcmp(arg1,"sendb")) { unsigned char msg=0; if(!strcmp(arg2,"-h")) msg=(unsigned char)strtoul(arg3,NULL,16); if(!strcmp(arg2,"-d")) msg=(unsigned char)strtoul(arg3,NULL,10); if(!strcmp(arg2,"-b")) msg=(unsigned char)strtoul(arg3,NULL,2); printf("Sending byte: %d 0x%x\n",msg,msg); if(!sendByte(&msg,&hdlr)) printf("ERROR - sending byte in serial buffer\n"); } else if(!strcmp(arg1,"reset")) { printf("reset . . . \n"); unsigned char msg[]={0x06,0x00,0xC1,0x00,0xFF,0xFF};//38FF sendFrame(msg,sizeof(msg),&hdlr); } else if(!strcmp(arg1,"ping")) { unsigned char msg[]={0x05,0x00,0xC0,0x3A,0xFF}; unsigned short size=0; unsigned short checksum=0; unsigned char frame[256]; printf("ping . . . \n"); sendFrame(msg,sizeof(msg),&hdlr); if(!readFrame(&size,&checksum,frame,&hdlr)) printf("ERROR - reading frame from serial buffer\n"); if(!sumcheck(frame,size)) printf("ERROR - checksum mismatch\n"); printf("\nConnected : FLYSKY i6 \nFirmware version : %d.%d \n",frame[6],frame[4]); } else if(!strcmp(arg1,"write")) { unsigned int offset=strtoul(arg3,NULL,16); unsigned char msg[256]; if(!readPage(msg,arg2,offset,256)) printf("ERROR - reading file\n"); writePage(msg,sizeof(msg),offset,&hdlr); } else if(!strcmp(arg1,"flash")) { BOOL cont = TRUE; unsigned char msg[256]; int i=0x1800; for(i=0x1800;(i<0xF300)&&cont;i=i+0x100) { //11 00 C2 00 18 00 09 00 00 00 00 00 00 00 00 0B FF unsigned char msg2[17]={0x11,0x00,0xC2,0xFF,0xFF,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF}; unsigned short reply_size=0; unsigned short reply_checksum=0; unsigned char reply[19]; //55 13 00 C2 80 00 18 00 09 00 00 00 00 00 00 00 00 34 FE msg2[3]=(unsigned char)i; msg2[4]=(unsigned char)(i>>8); sendFrame(msg2,sizeof(msg2),&hdlr); unsigned char ok_reply[19]={0x55,0x13,0x00,0xC2,0x80,0xFF,0xFF,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF}; ok_reply[5]=(unsigned char)i; ok_reply[6]=(unsigned char)(i>>8); unsigned int checksum=0xFFFF; int j=0; for(j=0;j<19-2;j++) { checksum=checksum-ok_reply[j]; } ok_reply[19-2]=(unsigned char)checksum; ok_reply[19-1]=(unsigned char)(checksum>>8); readFrame(&reply_size,&reply_checksum,reply,&hdlr); unsigned char reply_s[19]; memcpy(reply_s,reply,reply_size); // compare received reply with correct one if(memcmp(reply_s,ok_reply,sizeof(reply_s))!=0) { printf("ERROR - bad reply from TX\n"); cont=FALSE; } if(!readPage(msg,arg2,i,256)) { printf("ERROR - reading file\n"); cont=FALSE; } writePage(msg,sizeof(msg),i,&hdlr); i=i+0x100; if(!readPage(msg,arg2,i,256)) { printf("ERROR - reading file\n"); cont=FALSE; } writePage(msg,sizeof(msg),i,&hdlr); i=i+0x100; if(!readPage(msg,arg2,i,256)) { printf("ERROR - reading file\n"); cont=FALSE; } writePage(msg,sizeof(msg),i,&hdlr); i=i+0x100; if(!readPage(msg,arg2,i,256)) { printf("ERROR - reading file\n"); cont=FALSE; } writePage(msg,sizeof(msg),i,&hdlr); } //reset if(cont) { printf("Reset . . .\n"); unsigned char msg3[]={0x06,0x00,0xC1,0x00,0xFF,0xFF};//38FF sendFrame(msg3,sizeof(msg3),&hdlr); } } else if(!strcmp(arg1,"open")) { closeCom(&hdlr); unsigned int n_com=strtoul(arg2,NULL,10); unsigned int n_baudrate=strtoul(arg3,NULL,10); printf("Opening COM%d at %d bauds : ",n_com,n_baudrate); if(openCom(n_com,n_baudrate,&hdlr)) printf("SUCCESS"); else printf("FAILED - verify your COM port number and baudrate settings"); printf("\n\n"); } else if(strcmp(arg1,"quit")) { printf("-- Unknown command \"%s\"\n",arg1); printf("-- Type \"help\" for a command list\n"); } }while(strcmp(arg1,"quit"));