Esempio n. 1
0
/*  ...
 */
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());
}
Esempio n. 2
0
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";
  }
}