void setRegionWidth (int width) { if (isFlipX()) { setU(u2 + width / (float) texture.getWidth()); } else { setU2(u + width / (float) texture.getWidth()); } }
static __attribute__((constructor)) void myInit() { setU2(); //fprintf(stderr, "init u2\n"); }
/* generate ublox binary message ----------------------------------------------- * generate ublox binary message from message string * args : char *msg IO message string * "CFG-PRT portid res0 res1 mode baudrate inmask outmask flags" * "CFG-USB vendid prodid res1 res2 power flags vstr pstr serino" * "CFG-MSG msgid rate0 rate1 rate2 rate3" * "CFG-NMEA filter version numsv flags" * "CFG-RATE meas nav time" * "CFG-CFG clear_mask save_mask load_mask" * "CFG-TP interval length status time_ref res adelay rdelay udelay" * "CFG-NAV2 ..." * "CFG-DAT maja flat dx dy dz rotx roty rotz scale" * "CFG-INF protocolid res0 res1 mask0 mask1 mask2 mask3" * "CFG-RST navbbr reset res" * "CFG-RXM gpsmode lpmode" * "CFG-ANT flags pins" * "CFG-FXN flags treacq tacq treacqoff tacqoff ton toff res basetow" * "CFG-SBAS mode usage maxsbas res scanmode" * "CFG-LIC key0 key1 key2 key3 key4 key5" * "CFG-TM intid rate flags" * "CFG-TM2 ch res0 res1 rate flags" * "CFG-TMODE tmode posx posy posz posvar svinmindur svinvarlimit" * "CFG-EKF ..." * unsigned char *buff O binary message * return : length of binary message (0: error) * note : see reference [1] for details. *-----------------------------------------------------------------------------*/ extern int gen_ubx(const char *msg, unsigned char *buff) { const char *cmd[]={ "PRT","USB","MSG","NMEA","RATE","CFG","TP","NAV2","DAT","INF", "RST","RXM","ANT","FXN","SBAS","LIC","TM","TM2","TMODE","EKF","" }; const unsigned char id[]={ 0x00,0x1B,0x01,0x17,0x08,0x09,0x07,0x1A,0x06,0x02, 0x04,0x11,0x13,0x0E,0x16,0x80,0x10,0x19,0x1D,0x12 }; const int prm[][32]={ {FU1,FU1,FU2,FU4,FU4,FU2,FU2,FU2,FU2}, /* PRT */ {FU2,FU2,FU2,FU2,FU2,FU2,FS32,FS32,FS32}, /* USB */ {FU1,FU1,FU1,FU1,FU1,FU1}, /* MSG */ {FU1,FU1,FU1,FU1}, /* NMEA */ {FU2,FU2,FU2}, /* RATE */ {FU4,FU4,FU4}, /* CFG */ {FU4,FU4,FI1,FU1,FU2,FI2,FI2,FI4}, /* TP */ {FU1,FU1,FU2,FU1,FU1,FU1,FU1,FI4,FU1,FU1,FU1,FU1,FU1,FU1,FU2,FU2,FU2,FU2, FU2,FU1,FU1,FU2,FU4,FU4}, /* NAV2 */ {FR8,FR8,FR4,FR4,FR4,FR4,FR4,FR4,FR4}, /* DAT */ {FU1,FU1,FU2,FU1,FU1,FU1,FU1}, /* INF */ {FU2,FU1,FU1}, /* RST */ {FU1,FU1}, /* RXM */ {FU2,FU2}, /* ANT */ {FU4,FU4,FU4,FU4,FU4,FU4,FU4,FU4}, /* FXN */ {FU1,FU1,FU1,FU1,FU4}, /* SBAS */ {FU2,FU2,FU2,FU2,FU2,FU2}, /* LIC */ {FU4,FU4,FU4}, /* TM */ {FU1,FU1,FU2,FU4,FU4}, /* TM2 */ {FU4,FI4,FI4,FI4,FU4,FU4,FU4}, /* TMODE */ {FU1,FU1,FU1,FU1,FU4,FU2,FU2,FU1,FU1,FU2} /* EKF */ }; unsigned char *q=buff; char mbuff[1024],*args[32],*p; int i,j,n,narg=0; trace(4,"gen_ubxf: msg=%s\n",msg); strcpy(mbuff,msg); for (p=strtok(mbuff," ");p&&narg<32;p=strtok(NULL," ")) { args[narg++]=p; } if (narg<1||strncmp(args[0],"CFG-",4)) return 0; for (i=0;*cmd[i];i++) { if (!strcmp(args[0]+4,cmd[i])) break; } if (!*cmd[i]) return 0; *q++=UBXSYNC1; *q++=UBXSYNC2; *q++=UBXCFG; *q++=id[i]; q+=2; for (j=1;prm[i][j-1]>0;j++) { switch (prm[i][j-1]) { case FU1 : U1(q)=j<narg?(unsigned char )atoi(args[j]):0; q+=1; break; case FU2 : setU2(q, j<narg?(unsigned short)atoi(args[j]):0); q+=2; break; case FU4 : setU4(q, j<narg?(unsigned int )atoi(args[j]):0); q+=4; break; case FI1 : I1(q)=j<narg?(char )atoi(args[j]):0; q+=1; break; case FI2 : setI2(q, j<narg?(short )atoi(args[j]):0); q+=2; break; case FI4 : setI4(q, j<narg?(int )atoi(args[j]):0); q+=4; break; case FR4 : setR4(q, j<narg?(float )atof(args[j]):0); q+=4; break; case FR8 : setR8(q,j<narg?(double )atof(args[j]):0); q+=8; break; case FS32: sprintf((char *)q,"%-32.32s",j<narg?args[j]:""); q+=32; break; } } n=(int)(q-buff)+2; setU2(buff+4, (unsigned short)(n-8)); setcs(buff,n); trace(5,"gen_ubxf: buff=\n"); traceb(5,buff,n); return n; }