int8_t ctlsocket(uint8_t sn, ctlsock_type cstype, void* arg) { uint8_t tmp = 0; CHECK_SOCKNUM(); switch(cstype) { case CS_SET_IOMODE: tmp = *((uint8_t*)arg); if(tmp == SOCK_IO_NONBLOCK) sock_io_mode |= (1<<sn); else if(tmp == SOCK_IO_BLOCK) sock_io_mode &= ~(1<<sn); else return SOCKERR_ARG; break; case CS_GET_IOMODE: //M20140501 : implict type casting -> explict type casting //*((uint8_t*)arg) = (sock_io_mode >> sn) & 0x0001; *((uint8_t*)arg) = (uint8_t)((sock_io_mode >> sn) & 0x0001); // break; case CS_GET_MAXTXBUF: *((uint16_t*)arg) = getSn_TxMAX(sn); break; case CS_GET_MAXRXBUF: *((uint16_t*)arg) = getSn_RxMAX(sn); break; case CS_CLR_INTERRUPT: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IR(sn,*(uint8_t*)arg); break; case CS_GET_INTERRUPT: *((uint8_t*)arg) = getSn_IR(sn); break; #if _WIZCHIP_ != 5100 case CS_SET_INTMASK: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IMR(sn,*(uint8_t*)arg); break; case CS_GET_INTMASK: *((uint8_t*)arg) = getSn_IMR(sn); break; #endif default: return SOCKERR_ARG; } return SOCK_OK; }
int8_t ctlsocket(uint8_t sn, ctlsock_type cstype, void* arg) { uint8_t tmp = 0; CHECK_SOCKNUM(); switch(cstype) { case CS_SET_IOMODE: tmp = *((uint8_t*)arg); if(tmp == SOCK_IO_NONBLOCK) sock_io_mode |= (1<<sn); else if(tmp == SOCK_IO_BLOCK) sock_io_mode &= ~(1<<sn); else return SOCKERR_ARG; break; case CS_GET_IOMODE: *((uint8_t*)arg) = (sock_io_mode >> sn) & 0x0001; break; case CS_GET_MAXTXBUF: *((uint16_t*)arg) = getSn_TxMAX(sn); break; case CS_GET_MAXRXBUF: *((uint16_t*)arg) = getSn_RxMAX(sn); break; case CS_CLR_INTERRUPT: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IR(sn,*(uint8_t*)arg); break; case CS_GET_INTERRUPT: *((uint8_t*)arg) = getSn_IR(sn); break; case CS_SET_INTMASK: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IMR(sn,*(uint8_t*)arg); break; case CS_GET_INTMASK: *((uint8_t*)arg) = getSn_IMR(sn); default: return SOCKERR_ARG; } return SOCK_OK; }