int Set_csr (unsigned short pat, char *st) { unsigned short csr = 0; unsigned short str1[20], str2[20]; if (log_print != 2) sleep (1); print (2, "Mise a 1 du BIT %s\r", st); csr = pat; if (set_csr (bc, rt, &csr, &status) == (-1)) { print (1, "Probleme systeme [%d] avec set_csr", errno); return (1); } if (get_csr (bc, rt, &csr, &status) == (-1)) { print (1, "Probleme systeme [%d] avec get_csr", errno); return (1); } if ((csr & pat) != pat) { convbin (pat, (char *) str1); convbin (csr, (char *) str2); print (1, " Set bit of CSR faild. Pattern: [%s] CSR: [%s]\n", (char *) str1, (char *) str2); return (1); } return (0); }
void xorbin(char *pInval,char *pMaskval) { unsigned int i, j, TmpVal, divis; char ConvInval[9]=""; char ConvMaskval[9]=""; /* Run on the encrypted/unencrypted characters. */ for (i=0; i < strlen(pInval) ; i++) { // Convert the password and mask strings to binary presentation. */ convbin((char *)&ConvInval,(pInval+i)); convbin((char *)&ConvMaskval,(pMaskval+i)); divis = 128; TmpVal = 0; // Unencrypt/encrypt the password binary string. for (j=0; j < 8 ; j++) { if ((ConvInval[j]-'0' + ConvMaskval[j]-'0')==1) TmpVal+=divis; divis/=2; } *(pInval+i) = TmpVal; } // End the converted string. *(pInval+i) ='\0'; }
/* main ----------------------------------------------------------------------*/ int main(int argc, char **argv) { rnxopt_t opt={{0}}; int format; char *ifile="",*ofile[7]={0},*dir="."; /* analyize command line options */ format=cmdopts(argc,argv,&opt,&ifile,ofile,&dir); if (!*ifile) { fprintf(stderr,"no input file\n"); return -1; } if (format<0) { fprintf(stderr,"input format can not be recognized\n"); return -1; } sprintf(opt.prog,"%s %s",PRGNAME,VER_RTKLIB); sprintf(opt.comment[0],"log: %-55.55s",ifile); sprintf(opt.comment[1],"format: %s",formatstrs[format]); if (*opt.rcvopt) { strcat(opt.comment[1],", option: "); strcat(opt.comment[1],opt.rcvopt); } return convbin(format,&opt,ifile,ofile,dir); }
int reset (void) { char st[20]; unsigned short csr; print (2, "\rReset (MC8) du bc[%d] rt[%d] ", bc, rt); if (mdrop (bc, rt, 1, 0, 8, &status, (char *) &csr) != 0) { print (1, "\nReset:System error for mdrop mode_code:RESET"); return (-1); } convbin (status, st); print (1, " MC(8) - Status: %s\n", st); sleep (4); if (get_csr (bc, rt, &csr, &status) == (-1)) { print (1, "\nReset:System error for get_csr"); return (-1); } return (status); }
int tst_rst_pointer (short flg, /* bit du csr (RRP ou RTP) */ int (*fun_wr) (short, short, short, char *, unsigned short *), /* ecrire dans le buffer (set_tx_buf ou set_rx_buf) */ int (*fun_rd) (short, short, short, char *, unsigned short *), /* lire dans le buffer (get_tx_buf ou get_rx_buf) */ int (*fun_rst) (short, short, unsigned short *, unsigned short *)) { /* faire reset pointer (set_csr ou clr_csr) */ unsigned short buf[4096], *pt, csr; unsigned short i, seuil; char str1[20], str2[20]; int Fl_buf = 0; seuil = 128; /* size in 16-bits words */ if (flg & 0x80) Fl_buf = 0; /* Clear buffer */ for (pt = buf, i = 0; i < seuil; i++) *pt++ = 0; if (fun_wr (bc, rt, seuil * 2, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in write_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in write_R_buf\n"); } /* reset pointer */ csr = flg; if (fun_rst (bc, rt, &csr, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in reset_T_pointer\n") else BAD1 ("\rtst_rst_pointer:System error in reset_R_pointer\n"); } /* write 32 words */ for (pt = buf, i = 0; i < 32; i++) *pt++ = i; if (fun_wr (bc, rt, 64, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in write_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in write_R_buf\n"); } /* reset pointer */ csr = flg; if (fun_rst (bc, rt, &csr, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in reset_T_pointer\n") else BAD1 ("\rtst_rst_pointer:System error in reset_R_pointer\n"); } /* read 16 words and compare */ for (pt = buf, i = 0; i < 16; i++) *pt++ = 0; if (fun_rd (bc, rt, 32, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in read_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in read_R_buf\n"); } for (pt = buf, i = 0; i < 16; i++, pt++) { if (*pt != i) { convbin (*pt, str1); convbin (i, str2); print (1, "\nDATA error in tst_rst_pointer:\n read [%s] write [%s]\n", str1, str2); erreur++; if (t_err) return (erreur); } } /* Set local bit and play with the pointer */ csr = LM_BIT; if (set_csr (bc, rt, &csr, &status) == (-1)) BAD1 ("\rtst_rst_pointer:System error in set LOCAL bit\n"); /* reset pointer */ csr = flg; if (fun_rst (bc, rt, &csr, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in reset_T_pointer\n") else BAD1 ("\rtst_rst_pointer:System error in reset_R_pointer\n"); } /* write 8 words */ for (pt = buf, i = 0; i < 8; i++) *pt++ = (i * 4) + i; /* other pattern */ if (fun_wr (bc, rt, 16, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in write_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in write_R_buf\n"); } /* read 8 words and compare. They should be 0xFFFF */ for (pt = buf, i = 0; i < 8; i++) *pt++ = 0; if (fun_rd (bc, rt, 16, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in read_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in read_R_buf\n"); } for (pt = buf, i = 0; i < 8; i++, pt++) { if (*pt != 0xFFFF) { convbin (*pt, str1); convbin (0xffff, str2); print (1, "\nDATA error in tst_rst_pointer:\n read [%s] write [%s]\n", str1, str2); erreur++; if (t_err) return (erreur); } } /* Reset local bit and read again the buffer */ csr = LM_BIT; if (clr_csr (bc, rt, &csr, &status) == (-1)) BAD1 ("\rtst_rst_pointer:System error in reset LOCAL bit\n"); /* read 16 words and compare */ for (pt = buf, i = 0; i < 16; i++) *pt++ = 0; if (fun_rd (bc, rt, 32, (char *) buf, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in read_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in read_R_buf\n"); } for (pt = buf, i = 16; i < 32; i++, pt++) { if (*pt != i) { convbin (*pt, str1); convbin (i, str2); print (1, "\nDATA error in tst_rst_pointer:\n read [%s] write [%s]\n", str1, str2); erreur++; if (t_err) return (erreur); } } return 0; }
int tst_buffer (short flg, /* bit du csr (RRP ou RTP) */ int (*fun_wr) (short, short, short, char *, unsigned short *), /* fonction pour ecrire dans le buffer (set_tx_buf ou set_rx_buf) */ int (*fun_rd) (short, short, short, char *, unsigned short *), /* fonction pour lire dans le buffer (get_tx_buf ou get_rx_buf) */ char *str) { unsigned short buf1[4096], buf2[4096], *pt, *pt1, csr; short i; char str1[20], str2[20]; int data_code, sycle_pass, lim, size_of_portion, Fl_buf = 0; sycle_pass = 0; data_code = 1; if (flg & 0x80) Fl_buf = 0; do { full_buff (data_code, buf1); for (size_of_portion = 2; size_of_portion <= 256; size_of_portion += 2) { /* clear buffer */ print (2, "clear buffer\n"); for (pt = buf2, i = 0; i < 128; i++) *pt++ = 0; /* clear buffer */ if (fun_wr (bc, rt, size_of_portion, (char *) buf2, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_rst_pointer:System error in write_T_buf\n") else BAD1 ("\rtst_rst_pointer:System error in write_R_buf\n"); } /* reset pointer */ csr = flg; print (2, "reset pointer; "); if (set_csr (bc, rt, &csr, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_buffer:System error in reset_T_pointer\n") else BAD1 ("\rtst_buffer:System error in reset_R_pointer\n"); } /* Send data in one chunk */ print (2, "writing %d words to the buffer\n", size_of_portion); if (fun_wr (bc, rt, size_of_portion, (char *) buf1, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_buffer:System error in write_T_buf\n") else BAD1 ("\rtst_buffer:System error in write_R_buf\n"); } /* reset pointer */ csr = flg; print (2, "reset pointer; "); if (set_csr (bc, rt, &csr, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_buffer:System error in reset_T_pointer\n") else BAD1 ("\rtst_buffer:System error in reset_R_pointer\n"); } /* Read data in one chunk */ print (2, "reading %d words to the buffer\n", size_of_portion); if (fun_rd (bc, rt, size_of_portion, (char *) buf2, &status) == (-1)) { if (Fl_buf == 0) BAD1 ("\rtst_buffer:System error in read_T_buf\n") else BAD1 ("\rtst_buffer:System error in read_R_buf\n"); } /* compare data */ lim = size_of_portion / 2; print (2, "compare data\n"); for (pt = buf1, pt1 = buf2, i = 0; i < lim; i++, pt++, pt1++) if (*pt != *pt1) { convbin (*pt, str1); convbin (*pt1, str2); print (1, "\rDATA error in tst_buffer:\tPointer %d\n read [%s]\n write [%s]\n", i, str1, str2); erreur++; } if (data_code == 6) size_of_portion += 8; if (go_on == 0) break; } if (data_code == 6) { data_code--; if (++sycle_pass == 16) data_code++; } } while ((++data_code < 7) && (go_on != 0)); return (erreur); }
int bounce (void) { unsigned short csr; unsigned short buff[4096], data[4096], *pts, *ptd; int i, l = 0, flag = 0; int seuil = 0; unsigned char str1[20], str2[20]; char dir; seuil = 128; dir = 8; /* tell G64 to start bounce with LRR and NEM set */ csr = LRREQ_BIT + NEM_BIT; if (set_csr (bc, rt, &csr, &status) == -1) BAD1 ("system error in set LRR+NEM"); /* reset bit TB et RB */ csr = TB_BIT + RB_BIT; if (clr_csr (bc, rt, &csr, &status) == -1) BAD1 ("system error in clr RB+TB"); /* fill data */ for (i = 0; i < seuil; i++) data[i] = (i * (0xffff / seuil)) + ((0xffff / seuil) * l + l); l = 1; while (go_on) { print (1, "%c%c", '|' + (l & 0xfffe), dir); print (2, "Test avec %4d mots\n", l); /* reset receive pointer */ csr = RRP_BIT; if (set_csr (bc, rt, &csr, &status) == -1) BAD ("system error in set RRP"); /* fill buffer */ if (set_rx_buf (bc, rt, l * 2, (char *) data, &status) != 0) BAD ("system error in set_rc_buf"); /* set bits RB */ csr = RB_BIT; if (set_csr (bc, rt, &csr, &status) == -1) BAD ("system error in set RB"); /* wait for reponse */ if (wait_for_csr (TB_BIT, TB_BIT, 20000, 0) == 0) { print (1, "TIME_OUT a l'attente du Transmit Buffer plein.\n"); erreur++; if (t_err) continue; } /* reset transmit pointer */ csr = RTP_BIT; if (set_csr (bc, rt, &csr, &status) == -1) BAD ("system error in set RTP"); /* read reponse */ for (i = 0; i < l; i++) buff[i] = 0; if (get_tx_buf (bc, rt, l * 2, (char *) buff, &status) != 0) BAD ("system error in get_tx_buf"); /* reset bit TB */ csr = TB_BIT; if (clr_csr (bc, rt, &csr, &status) == -1) BAD ("system error in clr TB"); /* compare */ flag = 0; i = l; pts = data; ptd = buff; do { if (*pts != *ptd) { flag++; erreur++; convbin (*pts, (char *) str1); convbin (*ptd, (char *) str2); print (1, "DATA error in test_BOUNCE:\tPointer %d\n read [%s]\n write [%s]\n", i, str2, str1); break; } pts++; ptd++; } while (--i); if (++l > seuil) break; } /* clear collision pattern LRR and NEM set */ csr = LRREQ_BIT + NEM_BIT; if (clr_csr (bc, rt, &csr, &status) == -1) BAD1 ("system error in clr LRR+NEM"); if (get_csr (bc, rt, &csr, &status) == -1) BAD1 ("system error in get_csr"); if ((csr & INV_BIT) == INV_BIT) { print (0, "Le G64 a detecte une ou plusieurs erreurs au cours du test collision\n"); erreur++; csr = INV_BIT; if (clr_csr (bc, rt, &csr, &status) == -1) BAD1 ("system error in clr INV"); if (t_err) return t_err; } return (erreur); }