FskErr createFrontAnalogRead(FskPinAnalog pin, double *value)
{
	createFrontAnalog cfa = (createFrontAnalog)pin;
	FskErr err;
	UInt16 readValue;

	err = FskPinI2CSetAddress(cfa->i2c, cfa->address);
	if (err) return err;

	err = FskPinI2CReadDataWord(cfa->i2c, a2dpins[cfa->pin], &readValue);
	if (err) return err;

	*value = ((double)readValue) / 1023.0;

	return kFskErrNone;
}
Beispiel #2
0
void xs_i2c_readWordDataSMB(xsMachine *the)
{
    xsI2C i2c = xsGetHostData(xsThis);
    UInt8 command = (UInt8)xsToInteger(xsArg(0));
	FskErr err;
    UInt16 val;
  
    DBG_I2C("xs_i2c_readWordDataSMB Call SMB to register %d\n", command);

	xsThrowIfNULL(i2c);

    FskPinI2CSetAddress(i2c->pin, i2c->address);

    err = FskPinI2CReadDataWord(i2c->pin, command, &val);
//@@        if (! (i2c->address == 0x36) ) xsTraceDiagnostic("I2C readWordDataSMB register %d failed %s.", (int)reg, i2c->diagnosticID);
	xsThrowDiagnosticIfFskErr(err, "I2C readWordDataSMB register %d failed %s.", (int)command, i2c->diagnosticID);

    xsResult = xsInteger(val);
}