int SpiDrv::waitResponseParams(uint8_t cmd, uint8_t numParam, tParam *params) { char _data = 0; int i = 0, ii = 0; IF_CHECK_START_CMD(_data) { CHECK_DATA(cmd | REPLY_FLAG, _data) { }; uint8_t _numParam = readChar(); if ( _numParam != 0 ) { for ( i = 0; i < _numParam; ++i ) { params[i].paramLen = readParamLen8(); for ( ii = 0; ii < params[i].paramLen; ++ii ) { // Get Params data params[i].param[ii] = spiTransfer(DUMMY_DATA); } } } else { WARN("Error numParam == 0"); return 0; } if ( numParam != _numParam ) { WARN("Mismatch numParam"); return 0; } readAndCheckChar(END_CMD, &_data); } return 1; }
int SpiDrv::waitResponseData8(uint8_t cmd, uint8_t* param, uint8_t* param_len) { char _data = 0; int ii = 0; IF_CHECK_START_CMD(_data) { CHECK_DATA(cmd | REPLY_FLAG, _data){}; uint8_t numParam = readChar(); if (numParam != 0) { readParamLen8(param_len); for (ii=0; ii<(*param_len); ++ii) { // Get Params data param[ii] = spiTransfer(DUMMY_DATA); } } readAndCheckChar(END_CMD, &_data); } return 1; }
int SpiDrv::waitResponse(uint8_t cmd, uint8_t* numParamRead, uint8_t** params, uint8_t maxNumParams) { char _data = 0; int i =0, ii = 0; char *index[WL_SSID_MAX_LENGTH]; for (i = 0 ; i < WL_NETWORKS_LIST_MAXNUM ; i++) index[i] = (char *)params + WL_SSID_MAX_LENGTH*i; IF_CHECK_START_CMD(_data) { CHECK_DATA(cmd | REPLY_FLAG, _data){}; uint8_t numParam = readChar(); if (numParam > maxNumParams) { numParam = maxNumParams; } *numParamRead = numParam; if (numParam != 0) { for (i=0; i<numParam; ++i) { uint8_t paramLen = readParamLen8(); for (ii=0; ii<paramLen; ++ii) { //ssid[ii] = spiTransfer(DUMMY_DATA); // Get Params data index[i][ii] = (uint8_t)spiTransfer(DUMMY_DATA); } index[i][ii]=0; } } else { WARN("Error numParams == 0"); readAndCheckChar(END_CMD, &_data); return 0; } readAndCheckChar(END_CMD, &_data); } return 1; }