QMap<QString, pokemonStruct> accessAllCaughtPokemon(QString trainerName) { QMap<QString, pokemonStruct> data; QSqlQuery query(Dynamic); QString statement = "SELECT * FROM CaughtPokemon WHERE trainer='" + trainerName + "'"; if( !query.exec(statement) ) { qDebug() << query.lastError().databaseText(); return data; } while( query.next() ) { pokemonStruct saved; saved.PID = query.record().field("PID").value().toInt(); saved.attEV = query.record().field("AtEV").value().toInt(); saved.CPID = query.record().field("CPID").value().toInt(); saved.defEV = query.record().field("DefEV").value().toInt(); saved.EXP = query.record().field("EXP").value().toInt(); saved.HPEV = query.record().field("HPEV").value().toInt(); saved.speedEV = query.record().field("speedEV").value().toInt(); saved.HP = query.record().field("HP").value().toInt(); saved.level = getLevel(saved.EXP); saved.name = getPokemonName(QString::number(saved.PID)); saved.attack = getStat(saved.attEV, getBaseAtt(saved.name), saved.level); saved.defense = getStat(saved.defEV, getBaseDef(saved.name), saved.level); saved.speed = getStat(saved.speedEV, getBaseSpeed(saved.name), saved.level); saved.HP = getHP(saved.HPEV, getBaseHP(saved.name), saved.level); QString moves = query.record().field("Moves").value().toString(); QStringList l = moves.split("|"); for(int i = 0; i < l.size(); i++) { QStringList m = l[i].split("."); moveStruct move; move.name = m[0]; move.pp = m[1].toInt(); move.accuracy = getAccuracy(move.name); move.damage = getDamage(move.name); move.type = getMoveType(move.name); saved.moves.append(move); } data.insert(saved.name, saved); } return data; }
static portTASK_FUNCTION(vmotorTask, pvParameters) { motorStruct *param = (motorStruct *) pvParameters; motorMsg msg; const uint8_t bc_half_forward[] = {0xBC, 0xA0, 0x20, 0xFF, 0xFF, 0x00}; const uint8_t ba_15cm_forward[] = {0xBA, 0xA0, 0x20, 0x0F, 0x0F, 0x00}; // 0.5ft const uint8_t ba_45cm_forward[] = {0xBA, 0xA0, 0x20, 0x2D, 0x2D, 0x00}; // 1.5ft const uint8_t ba_90_left[] = {0xBA, 0xE0, 0x20, 0x12, 0x12, 0x00}; const uint8_t ba_90_right[] = {0xBA, 0xA0, 0x60, 0x12, 0x12, 0x00}; uint8_t ba_custom_forward[] = {0xBA, 0xA0, 0x20, 0x2D, 0x2D, 0x00}; const uint8_t *motorCommand = bc_half_forward; SendLCDPrintMsg(param->lcdData,20,"motorTask Init",portMAX_DELAY); for( ;; ) { //wait forever or until queue has something if (xQueueReceive(param->inQ,(void *) &msg,portMAX_DELAY) != pdTRUE) { VT_HANDLE_FATAL_ERROR(0); } switch(getMsgType(&msg)) { //only one type of message so far case SENSORTASK_MSG: { switch(getMoveType(&msg)) { case ROVERMOVE_FORWARD_ABSOLUTE: motorCommand = ba_custom_forward; uint8_t distance = getDistance(&msg); ba_custom_forward[3] = distance; ba_custom_forward[4] = distance; break; case ROVERMOVE_FORWARD_CORRECTED: motorCommand = bc_half_forward; break; case ROVERMOVE_TURN_LEFT: motorCommand = ba_90_left; break; case ROVERMOVE_TURN_RIGHT: motorCommand = ba_90_right; break; } //current slave address is 0x4F, take note if (vtI2CEnQ(param->dev, vtRoverMovementCommand, 0x4F, 6, motorCommand, 3) != pdTRUE) { VT_HANDLE_FATAL_ERROR(0); } SendLCDPrintMsg(param->lcdData,20,"SND: Move Command",portMAX_DELAY); break; } case ROVERACK_ERROR: { //this is where the arm will re-request the movement ack from the rover if (vtI2CEnQ(param->dev, vtRoverMovementCommand, 0x4F, 6, motorCommand, 3) != pdTRUE) { VT_HANDLE_FATAL_ERROR(0); } SendLCDPrintMsg(param->lcdData,20,"RSND: Move Command",portMAX_DELAY); break; } } } }