bool Volkslogger::SendCommandWriteBulk(Port &port, OperationEnvironment &env, Command cmd, const void *data, size_t size) { if (!SendCommand(port, env, cmd, 0, 0) || !WaitForACK(port, env)) return false; env.Sleep(100); return WriteBulk(port, env, data, size) && WaitForACK(port, env); }
void Write23X08_17(unsigned char reg, unsigned char data, unsigned char gAddrPins) { StartI2C1(); // Wait till start sequence is completed while (I2C1CONbits.SEN); MasterWriteI2C1(gControlByte | WrtCmd | gAddrPins); WaitForACK(); MasterWriteI2C1(reg); WaitForACK(); MasterWriteI2C1(data); WaitForACK(); StopI2C1(); // Wait till stop sequence is completed while (I2C1CONbits.PEN); }
unsigned char Read23X08_17(unsigned char reg, unsigned char gAddrPins) { unsigned char num; StartI2C1(); // Wait till start sequence is completed while (I2C1CONbits.SEN); MasterWriteI2C1(gControlByte | WrtCmd | gAddrPins); WaitForACK(); MasterWriteI2C1(reg); WaitForACK(); RestartI2C1(); IdleI2C1(); MasterWriteI2C1(gControlByte | RdCmd | gAddrPins); WaitForACK(); num = MasterReadI2C1(); NotAckI2C1(); StopI2C1(); IdleI2C1(); return (num); }
bool FlarmDevice::BinaryPing(OperationEnvironment &env, unsigned timeout_ms) { const TimeoutClock timeout(timeout_ms); // Create header for sending a binary ping request FLARM::FrameHeader header = PrepareFrameHeader(FLARM::MT_PING); // Send request and wait for positive answer return SendStartByte() && SendFrameHeader(header, env, timeout.GetRemainingOrZero()) && WaitForACK(header.GetSequenceNumber(), env, timeout.GetRemainingOrZero()); }