/* ... */ void CBaComTest::I2c() { TBaBool err = 0; uint16_t readReg = 0; uint16_t confReg = 0; ASS(BaComI2CInit()); ASS(BaComI2CSelectDev(ADDRADS1115)); // Test functions uint64_t funcs = BaComI2CFuncs(); ASS(funcs & I2C_FUNC_SMBUS_WRITE_I2C_BLOCK); ASS(funcs & I2C_FUNC_SMBUS_READ_I2C_BLOCK ); ASS(funcs & I2C_FUNC_SMBUS_WRITE_BLOCK_DATA); ASS(!(funcs & I2C_FUNC_SMBUS_READ_BLOCK_DATA)); ASS(funcs & I2C_FUNC_SMBUS_PROC_CALL ); ASS(funcs & I2C_FUNC_SMBUS_WRITE_WORD_DATA); ASS(funcs & I2C_FUNC_SMBUS_READ_WORD_DATA ); ASS(funcs & I2C_FUNC_SMBUS_WRITE_BYTE_DATA); ASS(funcs & I2C_FUNC_SMBUS_READ_BYTE_DATA ); ASS(funcs & I2C_FUNC_SMBUS_WRITE_BYTE ); ASS(funcs & I2C_FUNC_SMBUS_READ_BYTE ); ASS(funcs & I2C_FUNC_SMBUS_QUICK ); ASS(!(funcs & I2C_FUNC_SMBUS_BLOCK_PROC_CALL)); // ... ASS(!(funcs & I2C_FUNC_SMBUS_BLOCK_PROC_CALL)); ASS(!(funcs & I2C_FUNC_NOSTART)); ASS(funcs & I2C_FUNC_SMBUS_PEC ); ASS(!(funcs & I2C_FUNC_PROTOCOL_MANGLING)); ASS(!(funcs & I2C_FUNC_10BIT_ADDR)); ASS(funcs & I2C_FUNC_I2C ); // ADS1115: http://www.ti.com/lit/ds/symlink/ads1113.pdf // Configuration register // Byte 0 Byte 1 // 7654 3210 5432 1098 // 0x83C0: 1000 0011 1100 0000: 33728 // 5 Data rate -^^^| |||| |||| |||| // 4 Comp Mode ----+ |||| |||| |||| // 3 Comp Pol -------+||| |||| |||| // 2 Comp Lat --------+|| |||| |||| // 0 Comp Q -----------++ |||| |||| // 15 Op Status -----------+||| |||| // 14 Mux ------------------+++ |||| // 9 Gain ---------------------+++| // 8 Op mode ---------------------+ // Continuous Mode confReg = 0b1000001111000000; ASS(BaComI2CWriteReg16(CONFREG, confReg)); readReg = BaComI2CReadReg16(CONFREG, &err); ASS_EQ(readReg, (uint16_t)0x8340); ASS(!err); printf("0x%04X, e:%i\n", readReg, err); // Voltage read BaCoreMSleep(5); readReg = bswap_16(BaComI2CReadReg16(CONVREG, &err)); // Same as original register, but without status flag ASS(!err); printf("%f V\n", 6.144*readReg/32767.0); BaCoreMSleep(5); // Byte order must be swapped to get the right int readReg = bswap_16(BaComI2CReadReg16(CONVREG, &err)); printf("%f V\n", 6.144*readReg/32767.0); ASS(!err); // One Shot Mode confReg = 0b1000001111000001; ASS(BaComI2CWriteReg16(CONFREG, confReg)); readReg = BaComI2CReadReg16(CONFREG, &err); ASS(!err); printf("0x%04X, e:%i\n", readReg, err); // voltage read BaCoreMSleep(5); // Byte order must be swapped to get the right int readReg = bswap_16(BaComI2CReadReg16(CONVREG, &err)); ASS(!err); printf("%f V, 0x%04x\n", 6.144*readReg/32767.0, readReg); ASS_EQ(uint8_t(readReg >> 8), BaComI2CRead8(&err)); ASS(!err); ASS_EQ(uint8_t(readReg >> 8), BaComI2CReadReg8(CONVREG, &err)); ASS(!err); ASS(BaComI2CExit()); }
void genUnitTypeTest() { std::ofstream of("testUnitTypes.txt"); of.setf(std::ios::showpoint); of.setf(std::ios::boolalpha); std::set<BWAPI::UnitType> types(BWAPI::UnitTypes::allUnitTypes().begin(), BWAPI::UnitTypes::allUnitTypes().end()); for (auto t : types) { of << tab(2) << "TEST_METHOD(UnitType" << t << ")\n"; of << tab(2) << "{\n"; of << tab(3) << "auto t = BWAPI::UnitTypes::" << t << ";\n"; of << tab(3) << "Assert_enum(" << t << ");\n\n"; #define ASS_EQ(n) of << tab(3) << "Assert_" #n "(" << t.n() << ");\n" ASS_EQ(getRace); ASS_EQ(requiredTech); ASS_EQ(cloakingTech); ASS_EQ(armorUpgrade); ASS_EQ(maxHitPoints); ASS_EQ(maxShields); ASS_EQ(maxEnergy); ASS_EQ(armor); ASS_EQ(mineralPrice); ASS_EQ(gasPrice); ASS_EQ(buildTime); ASS_EQ(supplyRequired); ASS_EQ(supplyProvided); ASS_EQ(spaceRequired); ASS_EQ(spaceProvided); ASS_EQ(buildScore); ASS_EQ(destroyScore); ASS_EQ(size); ASS_EQ(tileWidth); ASS_EQ(tileHeight); of << tab(3) << "Assert_tileSize(BWAPI::TilePosition" << t.tileSize() << ");\n"; ASS_EQ(dimensionLeft); ASS_EQ(dimensionUp); ASS_EQ(dimensionRight); ASS_EQ(dimensionDown); ASS_EQ(width); ASS_EQ(height); ASS_EQ(seekRange); ASS_EQ(sightRange); ASS_EQ(groundWeapon); ASS_EQ(maxGroundHits); ASS_EQ(airWeapon); ASS_EQ(maxAirHits); ASS_EQ(topSpeed); ASS_EQ(acceleration); ASS_EQ(haltDistance); ASS_EQ(turnRadius); ASS_EQ(canProduce); ASS_EQ(canAttack); ASS_EQ(canMove); ASS_EQ(isFlyer); ASS_EQ(regeneratesHP); ASS_EQ(isSpellcaster); ASS_EQ(hasPermanentCloak); ASS_EQ(isInvincible); ASS_EQ(isOrganic); ASS_EQ(isMechanical); ASS_EQ(isRobotic); ASS_EQ(isDetector); ASS_EQ(isResourceContainer); ASS_EQ(isResourceDepot); ASS_EQ(isRefinery); ASS_EQ(isWorker); ASS_EQ(requiresPsi); ASS_EQ(requiresCreep); ASS_EQ(isTwoUnitsInOneEgg); ASS_EQ(isBurrowable); ASS_EQ(isCloakable); ASS_EQ(isBuilding); ASS_EQ(isAddon); ASS_EQ(isFlyingBuilding); ASS_EQ(isNeutral); ASS_EQ(isHero); ASS_EQ(isPowerup); ASS_EQ(isBeacon); ASS_EQ(isFlagBeacon); ASS_EQ(isSpecialBuilding); ASS_EQ(isSpell); ASS_EQ(producesLarva); ASS_EQ(isMineralField); ASS_EQ(isCritter); ASS_EQ(canBuildAddon); of << tab(2) << "}\n"; } }