int SpiDrv::waitResponseCmd(uint8_t cmd, uint8_t numParam, uint8_t* param, uint8_t* param_len) { char _data = 0; int ii = 0; IF_CHECK_START_CMD(_data) { CHECK_DATA(cmd | REPLY_FLAG, _data){}; CHECK_DATA(numParam, _data); { readParamLen8(param_len); for (ii=0; ii<(*param_len); ++ii) { // Get Params data //param[ii] = spiTransfer(DUMMY_DATA); getParam(¶m[ii]); } } readAndCheckChar(END_CMD, &_data); } return 1; }
//--------------------------------------------------------- bool CVIEW_ScatterPlot::_Initialize_Grids(CSG_Grid *pGrid_X, CSG_Grid *pGrid_Y) { CHECK_DATA(pGrid_X); CHECK_DATA(pGrid_Y); if( !pGrid_X || !pGrid_Y ) { return( false ); } //----------------------------------------------------- m_sTitle.Printf("%s: [%s/%s]", _TL("Scatterplot"), pGrid_X->Get_Name(), pGrid_Y->Get_Name()); m_sX.Printf("%s", pGrid_X->Get_Name()); m_sY.Printf("%s", pGrid_Y->Get_Name()); bool bEqual = pGrid_X->Get_System() == pGrid_Y->Get_System(); int maxSamples = m_Options("SAMPLES_MAX")->asInt(); double Step = maxSamples > 0 && pGrid_X->Get_NCells() > maxSamples ? pGrid_X->Get_NCells() / maxSamples : 1.0; for(double dCell=0; dCell<pGrid_X->Get_NCells() && PROGRESSBAR_Set_Position(dCell, pGrid_X->Get_NCells()); dCell+=Step) { sLong iCell = (sLong)dCell; if( !pGrid_X->is_NoData(iCell) ) { if( bEqual ) { if( !pGrid_Y->is_NoData(iCell) ) { m_Trend.Add_Data(pGrid_X->asDouble(iCell), pGrid_Y->asDouble(iCell)); } } else { TSG_Point p = pGrid_X->Get_System().Get_Grid_to_World( (int)(iCell % pGrid_X->Get_NX()), (int)(iCell / pGrid_X->Get_NX()) ); double y; if( pGrid_Y->Get_Value(p, y) ) { m_Trend.Add_Data(pGrid_X->asDouble(iCell), y); } } } } return( true ); }
//--------------------------------------------------------- bool CVIEW_ScatterPlot::_Initialize_Table(void) { int xField = m_Parameters("FIELD_X")->asInt(); int yField = m_Parameters("FIELD_Y")->asInt(); CHECK_DATA(m_pTable); if( !m_pTable || xField < 0 || xField >= m_pTable->Get_Field_Count() || yField < 0 || yField >= m_pTable->Get_Field_Count() ) { return( false ); } int maxSamples = m_Options("SAMPLES_MAX")->asInt(); double Step = maxSamples > 0 && m_pTable->Get_Count() > maxSamples ? m_pTable->Get_Count() / maxSamples : 1.0; m_sTitle.Printf("%s: [%s]", _TL("Scatterplot"), m_pTable->Get_Name()); m_sX.Printf("%s", m_pTable->Get_Field_Name(xField)); m_sY.Printf("%s", m_pTable->Get_Field_Name(yField)); for(double i=0; i<m_pTable->Get_Record_Count() && PROGRESSBAR_Set_Position(i, m_pTable->Get_Record_Count()); i+=Step) { CSG_Table_Record *pRecord = m_pTable->Get_Record((int)i); if( !pRecord->is_NoData(xField) && !pRecord->is_NoData(yField) ) { m_Trend.Add_Data(pRecord->asDouble(xField), pRecord->asDouble(yField)); } } return( true ); }
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::waitResponseData16(uint8_t cmd, uint8_t* param, uint16_t* param_len) { char _data = 0; uint16_t ii = 0; IF_CHECK_START_CMD(_data) { CHECK_DATA(cmd | REPLY_FLAG, _data){}; uint8_t numParam = readChar(); if (numParam != 0) { readParamLen16(param_len); for (ii=0; ii<(*param_len); ++ii) { // Get Params data param[ii] = spiTransfer(DUMMY_DATA); } } readAndCheckChar(END_CMD, &_data); } return 1; }
//--------------------------------------------------------- bool CVIEW_ScatterPlot::_Initialize_Shapes(void) { CSG_Shapes *pPoints = m_Parameters("POINTS")->asShapes(); int Field = m_Parameters("FIELD" )->asInt(); TSG_Grid_Resampling Resampling; switch( m_Parameters("RESAMPLING")->asInt() ) { default: Resampling = GRID_RESAMPLING_NearestNeighbour; break; case 1: Resampling = GRID_RESAMPLING_Bilinear ; break; case 2: Resampling = GRID_RESAMPLING_BicubicSpline ; break; case 3: Resampling = GRID_RESAMPLING_BSpline ; break; } CHECK_DATA(m_pGrid); CHECK_DATA(pPoints); if( !m_pGrid || !pPoints || Field < 0 || Field >= pPoints->Get_Field_Count() ) { return( false ); } m_sTitle.Printf("%s: [%s/%s]", _TL("Scatterplot"), m_pGrid->Get_Name(), pPoints->Get_Name()); m_sX.Printf("%s", m_pGrid->Get_Name()); m_sY.Printf("%s", pPoints->Get_Field_Name(Field)); int maxSamples = m_Options("SAMPLES_MAX")->asInt(); double x, Step = maxSamples > 0 && pPoints->Get_Count() > maxSamples ? pPoints->Get_Count() / maxSamples : 1.0; for(double i=0; i<pPoints->Get_Count() && PROGRESSBAR_Set_Position(i, pPoints->Get_Count()); i+=Step) { CSG_Shape *pShape = pPoints->Get_Shape((int)i); if( !pShape->is_NoData(Field) && m_pGrid->Get_Value(pShape->Get_Point(0), x, Resampling) ) { m_Trend.Add_Data(x, pShape->asDouble(Field)); } } return( true ); }
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; }