static int cmd_pb2led(int argc, char *argv[]) { if(argc > 1) { my_errno = TOO_MANY_ARGUMENTS; return 1; } int rfd1 = svc_open("/btn/sw1",'r'); if(rfd1 < 0) { return 1; } int rfd2 = svc_open("/btn/sw2",'r'); if(rfd2 < 0) { return 1; } int wfd1 = svc_open("/led/orange",'w'); if(wfd1 < 0) { return 1; } int wfd2 = svc_open("/led/yellow",'w'); if(wfd2 < 0) { return 1; } while(1) { char buff[2]; svc_read(rfd1,&buff[0]); svc_read(rfd2,&buff[1]); if(buff[0] == '1' && buff[1] == '1') { svc_close(rfd1); svc_close(rfd2); svc_close(wfd1); svc_close(wfd2); return 0; } svc_write(wfd1,buff[0]); svc_write(wfd2,buff[1]); } return 1; }
void demoProc2(int argc,char *argv[]) { char tempstr[1024]; int fd1 = svc_open("/btn/sw1",'r'); int fd2 = svc_open("/btn/sw2",'r'); while(1) { char buff1,buff2; int bytesread1 = svc_read(fd1,&buff1); int bytesread2 = svc_read(fd2,&buff2); if(bytesread2 == 1 && buff2 == '1') { sprintf(tempstr,"Switch2 Pressed\r\n");uprintf(tempstr); delay(delayCount); } else if(bytesread1 == 1 && buff1 == '1') { break; } } }
void demoProc1(int argc,char *argv[]) { int wfd = svc_open("/lcd",'w'); if(wfd > 0) { char buff; while((buff = ugetc()) != CHAR_EOF) { svc_write(wfd,buff); } svc_close(wfd); } }
static int cmd_touch2led(int argc, char *argv[]) { if(argc > 1) { my_errno = TOO_MANY_ARGUMENTS; return 1; } int rfd[4]; int wfd[4]; rfd[0] = svc_open("/tsr/orange",'r'); rfd[1] = svc_open("/tsr/yellow",'r'); rfd[2] = svc_open("/tsr/blue",'r'); rfd[3] = svc_open("/tsr/green",'r'); wfd[0] = svc_open("/led/orange",'w'); wfd[1] = svc_open("/led/yellow",'w'); wfd[2] = svc_open("/led/blue",'w'); wfd[3] = svc_open("/led/green",'w'); while(1) { char buff[4]; svc_read(rfd[0],&buff[0]); svc_read(rfd[1],&buff[1]); svc_read(rfd[2],&buff[2]); svc_read(rfd[3],&buff[3]); if(buff[0] == '1' && buff[1] == '1' && buff[2] == '1' && buff[3] == '1') { svc_close(rfd[0]);svc_close(rfd[1]); svc_close(rfd[2]);svc_close(rfd[3]); svc_close(wfd[0]);svc_close(wfd[1]); svc_close(wfd[2]);svc_close(wfd[3]); return 0; } svc_write(wfd[0],buff[0]); svc_write(wfd[1],buff[1]); svc_write(wfd[2],buff[2]); svc_write(wfd[3],buff[3]); } return 1; }
static int cmd_ser2lcd(int argc, char *argv[]) { if(argc > 1) { my_errno = TOO_MANY_ARGUMENTS; return 1; } int wfd = svc_open("/lcd",'w'); if(wfd > 0) { char buff; while((buff = ugetc()) != CHAR_EOF) { svc_write(wfd,buff); } svc_close(wfd); return 0; } return 1; }
void demoProc3(int argc,char *argv[]) { char ledState = getLedState(); svc_pdbDemo(1); int fd = svc_open("/tsr/orange",'r'); while(1) { char buff; svc_read(fd,&buff); if(buff == '1') { break; } if(ledState != getLedState()) { ledState = getLedState(); svc_pdbDemo(1); } } svc_close(fd); }
static int cmd_fopen(int argc, char *argv[]) { char tempstr[1024]; if(argc > 3) { my_errno = TOO_MANY_ARGUMENTS; return 1; } if(argc < 3 ) { my_errno = TOO_FEW_ARGUMENTS; return 1; } int fd = svc_open(argv[1],argv[2][0]); if(fd >= 0) { sprintf(tempstr,"%s opened on file descriptor = %d\r\n",argv[1],fd);uprintf(tempstr); return 0; } sprintf(tempstr,"could not open %s\r\n",argv[1]);uprintf(tempstr); return 1; }
static int cmd_therm2ser(int argc, char *argv[]) { if(argc > 1) { my_errno = TOO_MANY_ARGUMENTS; return 1; } int rfd = svc_open("/ttr",'r'); if(rfd > 0) { char buff;int val; val = svc_read(rfd,&buff); while(!sw1In()) { char temp[8]; sprintf(temp,"%d\r\n",val); uprintf(temp); val = svc_read(rfd,&buff); } svc_close(rfd); return 0; } return 1; }
static int fnL42801894(struct OSImageScript *imgScript, void **bootAddrBuf, void **var6) { int fdesc = 0; int imgNo; int fileSize = 0; void *loadAddr; wlibc_uprintf("load kernel start\n"); for(imgNo = 0; imgNo < imgScript->segmentSectionCount; ++imgNo) { if(imgNo != 1) { loadAddr = imgScript->images[imgNo].baseAddr; } else { loadAddr = svc_alloc(65536); } if(loadAddr == 0) { wlibc_uprintf("img file %s base addres is NULL\n", loadAddr); return -1; } fdesc = svc_open(imgScript->images[imgNo].name, "rb"); if(fdesc == 0) { wlibc_uprintf("open img file %s failed\n", imgScript->images[imgNo].name); goto fail; } fileSize = svc_filesize(fdesc); if( fileSize > imgScript->images[imgNo].maxSize ) { wlibc_uprintf( "the img file %s length %d is larger than img max size %d\n", imgScript->images[imgNo].name, fileSize, imgScript->images[imgNo].maxSize); goto fail; } svc_read(loadAddr, 1, fileSize, fdesc); svc_close(fdesc); imgScript->images[imgNo].fileLen = fileSize; if(imgNo == 1) { do_boot_linux(imgScript->images[1].baseAddr, loadAddr, fileSize); svc_free(loadAddr); } loadAddr = 0; fdesc = 0; fileSize = 0; } loadAddr = imgScript->baseAddr; if(loadAddr == 0) { wlibc_uprintf("no script could be filed\n"); } else { /* 0x42F00000 - c:\script.bin contents */ memcpy(loadAddr, (const void*)0x42F00000, imgScript->maxSize); imgScript->param776 = imgScript->maxSize; } *bootAddrBuf = imgScript->images[0].baseAddr; *var6 = imgScript->images[1].baseAddr; wlibc_uprintf("load kernel successed\n"); return 0; fail: if(fdesc != 0) { svc_close(fdesc); } wlibc_uprintf("load kernel failed\n"); return -1; }
int eopen(const char *path) { return svc_open(path); }