#author("2021-12-05T16:28:15+09:00","default:Real2Virtual202111","Real2Virtual202111") #author("2021-12-05T23:20:55+09:00","default:Real2Virtual202111","Real2Virtual202111") [[Real2Virtual202111]] #code(c){{ #include "Initialize.h" #include "mbed.h" DigitalInOut pe0(p27); DigitalInOut pe1(p28); DigitalInOut pe2(p29); DigitalInOut pe3(p30); DigitalInOut pe4(p26); DigitalInOut pe5(p25); DigitalInOut pe6(p24); DigitalInOut pe7(p23); DigitalInOut pe8(p22); DigitalInOut pe9(p21); DigitalInOut pea(p20); DigitalInOut peb(p19); DigitalInOut pec(p18); DigitalInOut ped(p17); DigitalInOut pee(p16); DigitalInOut pef(p15); /* */ #define PXMAX 16 #define PBMAX 6 unsigned char (*getPEX[PXMAX])(void); unsigned char (*getPMEX[PXMAX])(void); void (*setPEX[PXMAX])(unsigned char); void (*setPMEX[PXMAX])(unsigned char); unsigned char (*getPBX[PBMAX])(void); unsigned char (*getPMBX[PBMAX])(void); void (*setPBX[PBMAX])(unsigned char); void (*setPMBX[PBMAX])(unsigned char); /* */ //#include "CommandBuffer.h" #include "InBuffer.h" //#include <string.h> //CommandBuffer::ackReturned( int faceID); unsigned char getPEX_i(int i){ if(i<0) return (unsigned char)(-1); if(i>PXMAX) return (unsigned char)(-1); return (*getPEX[i])(); } unsigned char setIthBit(unsigned char i, unsigned char x); unsigned char getPMEX_i(int i){ if(i<0) return(unsigned char)(-1); return (*getPMEX[i])(); void InBuffer::setPortConf( unsigned char (*getfun)(void), void (*modefun)(unsigned char x)){ getPort=getfun; setPortMode=modefun; setPortMode((unsigned char)0); /* input ... for sh7125 */ } void setPEX_i(int i, unsigned char c){ if(i>PXMAX) return; (*setPEX[i])(c); } //void trg_putc(unsigned char c); unsigned char setIthBit(unsigned char i, unsigned char x); void setPMEX_i(int i, unsigned char c){ if(i<0) return; if(i>PXMAX) return; (*setPMEX[i])(c); void InBuffer::setCommand(CommandBuffer *com){ command=com; } unsigned char getPBX_i(int i){ if(i<0) return (unsigned char)(-1); if(i>PBMAX) return (unsigned char)(-1); return (*getPBX[i])(); } void InBuffer::intrProcess(void){ volatile unsigned char cx; volatile unsigned char i,j; // volatile unsigned char sbi; // p % 8 = p & 0x07... for access bs // volatile unsigned char sbj; // p/8 = p >>3... for access bits // volatile unsigned char cs; i=getPort(); if(i==0) now=0; else now=1; // xputc(' '+i); unsigned char getPMBX_i(int i){ return (*getPMBX[i])(); } if(status==0){ /* waiting */ if(last==0 && now==1){ /* some thing was happen */ // printf("f=%d\n",(int)((*this).faceID)); /* start reading */ status=1; // trg_puts("status 0->1 - ");trg_putc((*this).channelID+'0');trg_puts("\n"); // (*this).sampleIntervalCounter=0; p=0; for(j=0;j<MaxBits;j++){ bits[j]=0x00; } } } else if(status==1){ /* reading bits sequence */ // if((*this).sampleIntervalCounter==0){ /**/ // xputc(' '+i); bits[p]=now; p++; /**/ /* if((*this).now!=0){ sbj=(*this).p>>3; cs=(*this).bits[sbj]; sbi=(*this).p & 0x07; cs=setIthBit(sbi,cs); (*this).bits[sbj]=cs; void setPBX_i(int i, unsigned char c){ if(i>PBMAX) return; if(i<0) return; (*setPBX[i])(c); } (*this).p++; */ if(p>=ReceiveBits){ // xputs("\n\r"); p=0; now=0; last=0; cx=decode(); if(cx==0xff){ status=0; } else if(cx==0x00){ status=0; } else{ // trg_puts("--"); // trg_putc(cx);trg_puts("\n"); // xputc(cx); xputs("]n"); // xputs("bits="); // for(j=0;j<ReceiveBits;j++) xputc('0'+bits[j]); // xputs("\n\r"); // printf("cx=%d %c\n\r",0+cx,cx); status=2; cin=cx; parse(cx); } } /* } else{ } (*this).sampleIntervalCounter++; if((*this).sampleIntervalCounter>=(*this).sampleInterval){ (*this).sampleIntervalCounter=0; } */ } else if(status==2) { status=0; } last=now; return; } void setPMBX_i(int i, unsigned char c){ if(i>PBMAX) return; if(i<0) return; (*setPMBX[i])(c); /* unsigned char startWithForInBit(struct inbit *this, char *c){ unsigned char p; p=0; while(c[p]!=0){ if(c[p]!=(*this).inputBuffer[p]) return 0; p++; } return 1; } int pinIO[16]; void setPE0(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<8); // else // LPC_GPIO0->DATA &= ~(1<<8); pe0=s; void shiftLeftForInBit(struct inbit *this, unsigned char i){ unsigned j,k; k=0; for(j=i;j<(*this).cbp;j++){ (*this).inputBuffer[k]=(*this).inputBuffer[j]; k++; } (*this).cbp=(*this).cbp-i; } void setPE1(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<9); // else // LPC_GPIO0->DATA &= ~(1<<9); pe1=s; */ unsigned char setIthBit(unsigned char i, unsigned char x){ unsigned char j; unsigned char mask; unsigned char r; mask=0x80; for(j=0;j<i;j++){ mask=mask>>1; } r=x | mask; return r; } void setPE2(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<11); // else // LPC_GPIO0->DATA &= ~(1<<11); pe2=s; unsigned char getIthBit(unsigned char i,unsigned char x){ unsigned char j; unsigned char mask; unsigned char r; mask=0x80; for(j=0;j<i;j++){ mask=mask>>1; } r=x & mask; if(r==0x00){ return r; } else{ return 0x01; } } void setPE3(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<5); // else // LPC_GPIO1->DATA &= ~(1<<5); pe3=s; void printHexChar(char c){ int ch,cl; ch=c; ch=ch>>4; cl=c & 0x0f; if(ch<10) // printf("%d",ch); xputd(ch); else // printf("%c",ch-10+'a'); xputd(ch-10+'a'); if(cl<10) // printf("%d",cl); xputd(cl); else // printf("%c",cl-10+'a'); xputd(cl-10+'a'); } void setPE4(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<6); // else // LPC_GPIO0->DATA &= ~(1<<6); pe4=s; } void setPE5(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<7); // else // LPC_GPIO0->DATA &= ~(1<<7); pe5=s; } void setPE6(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<4); // else // LPC_GPIO0->DATA &= ~(1<<4); pe6=s; } void setPE7(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<3); // else // LPC_GPIO0->DATA &= ~(1<<3); pe7=s; } void setPE8(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO0->DATA |= (1<<2); // else // LPC_GPIO0->DATA &= ~(1<<2); pe8=s; } void setPE9(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<0); // else // LPC_GPIO1->DATA &= ~(1<<0); pe9=s; } void setPEA(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<1); // else // LPC_GPIO1->DATA &= ~(1<<1); pea=s; void printHexArray(int size, char x[]){ int i; // unsigned int ch,cl; for(i=0;i<size;i++){ printHexChar(x[i]); } // printf("\n"); xputs("\n"); } void setPEB(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<2); // else // LPC_GPIO1->DATA &= ~(1<<2); peb=s; } void setPEC(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<4); // else // LPC_GPIO1->DATA &= ~(1<<4); pec=s; } void setPED(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<5); // else // LPC_GPIO1->DATA &= ~(1<<5); ped=s; } void setPEE(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<8); // else // LPC_GPIO1->DATA &= ~(1<<8); pee=s; } void setPEF(unsigned char s){ //LPC_GPIO0->DATA |= (1<<7); //PIO0-7 high led 1 on // LPC_GPIO0->DATA &= ~(1<<7); //PIO0-7 low //LPC_GPIO1->DATA |= (1<<5); //PIO0-5 high led 2 off // if(s==1) // LPC_GPIO1->DATA |= (1<<9); // else // LPC_GPIO1->DATA &= ~(1<<9); pef=s; } /* // 1. port initialize LPC_IOCON->PIO0_7 = 0xd0; LPC_IOCON->PIO1_5 = 0xd0; LPC_IOCON->PIO0_1 = 0xd0; // 2. port direction LPC_GPIO0->DIR |= (1<<7); //PIO0-7 to output LPC_GPIO1->DIR |= (1<<5); //PIO0-5 to output LPC_GPIO0->DIR &= ~(1<<1); //PIO0-1 to input */ unsigned char InBuffer::decode(void){ volatile unsigned char startp; volatile unsigned char c,i; // volatile unsigned char sbi; // volatile unsigned char sbj; // volatile unsigned char cs; // unsigned char s[3]; void setPME0(unsigned char s){ // LPC_IOCON->PIO0_8 = 0xd0; pinIO[0]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<8); // output pe0.output(); else // LPC_GPIO0->DIR &= ~(1<<8); // input pe0.input(); // trg_putHexArray((*this).bits,MaxBits); // printHexArray(bitsParChar,(*this).bits); startp=sampleInterval>>1; startp=startp+sampleInterval; c=0x00; for(i=0;i<8;i++){ // trg_puts(" startp=");hex2str(startp,s);trg_puts(s);trg_puts("\n"); c=c<<1; /* */ if(bits[startp]==1){ c=c|0x01; } /* */ /* sbi=startp & 0x07; sbj=startp >> 3; cs=(*this).bits[sbj]; c=c|getIthBit(sbi,cs); */ startp=startp+sampleInterval; } // printf("decode c="); printHexChar(c); printf("\n"); return c; } void setPME1(unsigned char s){ // LPC_IOCON->PIO0_9 = 0xd0; pinIO[1]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<9); // output pe1.output(); else // LPC_GPIO0->DIR &= ~(1<<9); // input pe1.input(); } //void setPME2(unsigned char s){ PD.DDR.BIT.B2 = s; PMD.RM.B2=s;} void setPME2(unsigned char s){ // LPC_IOCON->R_PIO0_11 = 0xd0; pinIO[2]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<11); // output pe2.output(); else // LPC_GPIO0->DIR &= ~(1<<11); // input pe2.input(); } //void setPME3(unsigned char s){ PD.DDR.BIT.B3 = s; PMD.RM.B3=s;} void setPME3(unsigned char s){ // LPC_IOCON->PIO0_5 = 0xd0; pinIO[3]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<5); // output pe3.output(); else // LPC_GPIO0->DIR &= ~(1<<5); // input pe3.input(); } //void setPME4(unsigned char s){ PD.DDR.BIT.B4 = s; PMD.RM.B4=s;} void setPME4(unsigned char s){ // LPC_IOCON->PIO0_6 = 0xd0; pinIO[4]=s; if(s==1) pe4.output(); // LPC_GPIO0->DIR |= (1<<6); // output else // LPC_GPIO0->DIR &= ~(1<<6); // input pe4.input(); } //void setPME5(unsigned char s){ PD.DDR.BIT.B5 = s; PMD.RM.B5=s;} void setPME5(unsigned char s){ // LPC_IOCON->PIO0_7 = 0xd0; pinIO[5]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<7); // output pe5.output(); else // LPC_GPIO0->DIR &= ~(1<<7); // input pe5.input(); } //void setPME6(unsigned char s){ PD.DDR.BIT.B6 = s; PMD.RM.B6=s;} void setPME6(unsigned char s){ // LPC_IOCON->PIO0_4 = 0xd0; pinIO[6]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<4); // output pe6.output(); else // LPC_GPIO0->DIR &= ~(1<<4); // input pe6.input(); } //void setPME7(unsigned char s){ PD.DDR.BIT.B7 = s; PMD.RM.B7=s;} void setPME7(unsigned char s){ // LPC_IOCON->PIO0_3 = 0xd0; pinIO[7]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<3); // output pe7.output(); else // LPC_GPIO0->DIR &= ~(1<<3); // input pe7.input(); } void setPME8(unsigned char s){ // LPC_IOCON->PIO0_2 = 0xd0; pinIO[8]=s; if(s==1) // LPC_GPIO0->DIR |= (1<<2); // output pe8.output(); else // LPC_GPIO0->DIR &= ~(1<<2); // input pe8.input(); } void setPME9(unsigned char s){ // LPC_IOCON->PIO1_0 = 0xd0; pinIO[9]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<0); // output pe9.output(); else // LPC_GPIO1->DIR &= ~(1<<0); // input pe9.input(); } //void setPME2(unsigned char s){ PD.DDR.BIT.B2 = s; PMD.RM.B2=s;} void setPMEA(unsigned char s){ // LPC_IOCON->PIO1_1 = 0xd0; pinIO[10]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<1); // output pea.output(); else // LPC_GPIO1->DIR &= ~(1<<1); // input pea.input(); } //void setPME3(unsigned char s){ PD.DDR.BIT.B3 = s; PMD.RM.B3=s;} void setPMEB(unsigned char s){ // LPC_IOCON->PIO1_2 = 0xd0; pinIO[11]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<2); // output peb.output(); else // LPC_GPIO1->DIR &= ~(1<<2); // input peb.input(); } //void setPME4(unsigned char s){ PD.DDR.BIT.B4 = s; PMD.RM.B4=s;} void setPMEC(unsigned char s){ // LPC_IOCON->PIO1_4 = 0xd0; pinIO[12]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<4); // output pec.output(); else // LPC_GPIO1->DIR &= ~(1<<4); // input pec.input(); } //void setPME5(unsigned char s){ PD.DDR.BIT.B5 = s; PMD.RM.B5=s;} void setPMED(unsigned char s){ // LPC_IOCON->PIO1_5 = 0xd0; pinIO[13]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<5); // output ped.output(); else // LPC_GPIO1->DIR &= ~(1<<5); // input ped.input(); } //void setPME6(unsigned char s){ PD.DDR.BIT.B6 = s; PMD.RM.B6=s;} void setPMEE(unsigned char s){ // LPC_IOCON->PIO1_8 = 0xd0; pinIO[14]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<8); // output pee.output(); else // LPC_GPIO1->DIR &= ~(1<<8); // input pee.input(); } //void setPME7(unsigned char s){ PD.DDR.BIT.B7 = s; PMD.RM.B7=s;} void setPMEF(unsigned char s){ // LPC_IOCON->PIO1_9 = 0xd0; pinIO[15]=s; if(s==1) // LPC_GPIO1->DIR |= (1<<9); // output pef.output(); else // LPC_GPIO1->DIR &= ~(1<<9); // input pef.input(); } unsigned char getPE0(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<8)] >> 8; // return rtn; return pe0; unsigned char InBuffer::getChar(void){ unsigned char rtn; if(status==0) return 0x00; if(status==1) return 0x00; // trg_puts(" getChar"); trg_putc((*this).cin); trg_puts("\n"); rtn=cin; status=0; cin=0; return rtn; } unsigned char getPE1(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<9)] >> 9; // return rtn; return pe1; } unsigned char getPE2(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<11)] >> 11; return pe2; } unsigned char getPE3(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<5)] >> 5; return pe3; } unsigned char getPE4(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<6)] >> 6; return pe4; } unsigned char getPE5(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<7)] >> 7; return pe5; } unsigned char getPE6(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<4)] >> 4; return pe6; } unsigned char getPE7(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<3)] >> 3; return pe7; } unsigned char getPE8(void){ // unsigned char rtn; // rtn = LPC_GPIO0-> MASKED_ACCESS[(1<<5)] >> 5; return pe8; } unsigned char getPE9(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<0)] >> 0; return pe9; } unsigned char getPEA(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<1)] >> 1; return pea; } unsigned char getPEB(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<2)] >> 2; return peb; } unsigned char getPEC(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<4)] >> 4; return pec; } unsigned char getPED(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<5)] >> 5; return ped; } unsigned char getPEE(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<8)] >> 8; return pee; } unsigned char getPEF(void){ // unsigned char rtn; // rtn = LPC_GPIO1-> MASKED_ACCESS[(1<<9)] >> 9; return pef; } unsigned char getPME0(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<8))>>8); return pinIO[0]; void InBuffer::setStatus( unsigned char s){ status=s; } unsigned char getPME1(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<9))>>9); return pinIO[1]; unsigned char InBuffer::getStatus(void){ return status; } unsigned char getPME2(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<11))>>11); return pinIO[2]; } unsigned char getPME3(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<5))>>5); return pinIO[3]; } unsigned char getPME4(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<6))>>6); return pinIO[4]; } unsigned char getPME5(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<7))>>7); return pinIO[5]; } unsigned char getPME6(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<4))>>4); return pinIO[6]; } unsigned char getPME7(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<3))>>3); return pinIO[7]; } unsigned char getPME8(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO0->DIR; // rtn=(unsigned char) ((d & (1<<2))>>2); return pinIO[8]; } unsigned char getPME9(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<0))>>0); return pinIO[9]; } unsigned char getPMEA(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<1))>>1); return pinIO[10]; } unsigned char getPMEB(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<2))>>2); return pinIO[11]; } unsigned char getPMEC(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<4))>>4); return pinIO[12]; } unsigned char getPMED(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<5))>>5); return pinIO[13]; } unsigned char getPMEE(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<8))>>8); return pinIO[14]; } unsigned char getPMEF(void){ // unsigned char rtn; // uint32_t d=LPC_GPIO1->DIR; // rtn=(unsigned char) ((d & (1<<9))>>9); return pinIO[15]; } void setPortFunctions(){ /* unsigned char (*getPEX[16])()={ getPE0, getPE1, getPE2, getPE3, getPE4, getPE5, getPE6, getPE7, getPE8, getPE9, getPEA, getPEB, getPEC, getPED, getPEE, getPEF }; */ getPEX[0]=getPE0; getPEX[1]=getPE1; getPEX[2]=getPE2; getPEX[3]=getPE3; getPEX[4]=getPE4; getPEX[5]=getPE5; getPEX[6]=getPE6; getPEX[7]=getPE7; getPEX[8]=getPE8; getPEX[9]=getPE9; getPEX[10]=getPEA; getPEX[11]=getPEB; getPEX[12]=getPEC; getPEX[13]=getPED; getPEX[14]=getPEE; getPEX[15]=getPEF; //void parseForInBit(struct inbit *this, unsigned char c); getPBX[0]=getPEA; getPBX[1]=getPEB; getPBX[2]=getPEC; getPBX[3]=getPED; getPBX[4]=getPEE; getPBX[5]=getPEF; InBuffer::InBuffer(unsigned char id, CommandBuffer *com ){ faceID=id; sampleInterval=SampleInterval0*SampleIntForDecode0; sampleIntForDecode=SampleIntForDecode0; status=2; setConnected((unsigned char)0); cin=0; command=com; cbp=0; } setPEX[0]=setPE0; setPEX[1]=setPE1; setPEX[2]=setPE2; setPEX[3]=setPE3; setPEX[4]=setPE4; setPEX[5]=setPE5; setPEX[6]=setPE6; setPEX[7]=setPE7; setPEX[8]=setPE8; setPEX[9]=setPE9; setPEX[10]=setPEA; setPEX[11]=setPEB; setPEX[12]=setPEC; setPEX[13]=setPED; setPEX[14]=setPEE; setPEX[15]=setPEF; void InBuffer::parse( unsigned char c){ // unsigned char cx; // unsigned char p; // unsigned char s[3]; CommandBuffer *com; com=command; // printf("face-%d char:%c is inputed.\n\r",faceID, c); // trg_puts("parseForInBit-1-");trg_putc(c); trg_puts("\n"); // hex2str(c,s); // trg_puts(" codeHex="); trg_puts(s); trg_puts("\n"); if(cbp>MaxInterFaceStrLen) { cbp=0; } if(cbp==0){ if(c=='p'){ cbp++; return; } else if(c=='a'){ cbp=0; (*com).ackReturned(faceID); return; } } else if(cbp==1){ inlen=h2i1(c); cbp++; return; } else if(cbp==2){ inlen=inlen*16+h2i1(c); cbp++; return; } else{ inputBuffer[cbp-3]=c; cbp++; if(inlen<cbp-3){ inputBuffer[cbp-2]=0; // returnAck(); return; } if(inlen> cbp-3){ return; } // trg_puts("parseForInBit-2"); trg_putc(c); trg_puts("\n"); inputBuffer[cbp-3]=0; int clen=xstrlen(inputBuffer); while(1){ if(((*com).putQueue)(faceID, inputBuffer,clen)==1){ cbp=0; returnAck(); return; } wait(100); } } setPBX[0]=setPEA; setPBX[1]=setPEB; setPBX[2]=setPEC; setPBX[3]=setPED; setPBX[4]=setPEE; setPBX[5]=setPEF; // trg_puts("parseForInBit-3");;trg_putc(c); trg_puts("\n"); getPMEX[0]=getPME0; getPMEX[1]=getPME1; getPMEX[2]=getPME2; getPMEX[3]=getPME3; getPMEX[4]=getPME4; getPMEX[5]=getPME5; getPMEX[6]=getPME6; getPMEX[7]=getPME7; getPMEX[8]=getPME8; getPMEX[9]=getPME9; getPMEX[10]=getPMEA; getPMEX[11]=getPMEB; getPMEX[12]=getPMEC; getPMEX[13]=getPMED; getPMEX[14]=getPMEE; getPMEX[15]=getPMEF; } getPMBX[0]=getPMEA; getPMBX[1]=getPMEB; getPMBX[2]=getPMEC; getPMBX[3]=getPMED; getPMBX[4]=getPMEE; getPMBX[5]=getPMEF; void InBuffer::returnAck(void){ // (*command).putChar(faceID,'a'); } int InBuffer::getNextDoorDirection(void){ return nextDoorDirection; } setPMEX[0]=setPME0; setPMEX[1]=setPME1; setPMEX[2]=setPME2; setPMEX[3]=setPME3; setPMEX[4]=setPME4; setPMEX[5]=setPME5; setPMEX[6]=setPME6; setPMEX[7]=setPME7; setPMEX[8]=setPME8; setPMEX[9]=setPME9; unsigned char InBuffer::getConnected(void){ // printf("face-%d getConnected=%d\n\r",(int)faceID,(int)connected); return connected; } setPMEX[10]=setPMEA; setPMEX[11]=setPMEB; setPMEX[12]=setPMEC; setPMEX[13]=setPMED; setPMEX[14]=setPMEE; setPMEX[15]=setPMEF; setPMBX[0]=setPMEA; setPMBX[1]=setPMEB; setPMBX[2]=setPMEC; setPMBX[3]=setPMED; setPMBX[4]=setPMEE; setPMBX[5]=setPMEF; void InBuffer::setConnected(unsigned char x){ connected=x; // printf("face-%d setConnected=%d\n\r",(int)faceID,(int)x); } }} ---- #counter