add conditional search command (0xEC)
This commit is contained in:
parent
a31256f60d
commit
13ff131110
@ -47,6 +47,7 @@ byte OneWireSlave::searchRomBytePos_;
|
||||
byte OneWireSlave::searchRomBitPos_;
|
||||
bool OneWireSlave::searchRomInverse_;
|
||||
bool OneWireSlave::resumeCommandFlag_;
|
||||
bool OneWireSlave::alarmedFlag_;
|
||||
|
||||
const byte* OneWireSlave::sendBuffer_;
|
||||
byte* OneWireSlave::recvBuffer_;
|
||||
@ -79,6 +80,7 @@ void OneWireSlave::begin(const byte* rom, byte pinNumber)
|
||||
rom_[7] = crc8(rom_, 7);
|
||||
|
||||
resumeCommandFlag_ = false;
|
||||
alarmedFlag_ = false;
|
||||
|
||||
clientReceiveBitCallback_ = 0;
|
||||
|
||||
@ -149,6 +151,11 @@ void OneWireSlave::stopWrite()
|
||||
write(0, 0, 0);
|
||||
}
|
||||
|
||||
void OneWireSlave::alarmed(bool value)
|
||||
{
|
||||
alarmedFlag_ = value;
|
||||
}
|
||||
|
||||
byte OneWireSlave::crc8(const byte* data, short numBytes)
|
||||
{
|
||||
byte crc = 0;
|
||||
@ -410,12 +417,26 @@ void OneWireSlave::onBitReceived_(bool bit, bool error)
|
||||
switch (receivingByte_)
|
||||
{
|
||||
case 0xF0: // SEARCH ROM
|
||||
resumeCommandFlag_ = false;
|
||||
beginSearchRom_();
|
||||
return;
|
||||
case 0xEC: // CONDITIONAL SEARCH ROM
|
||||
resumeCommandFlag_ = false;
|
||||
if (alarmedFlag_)
|
||||
{
|
||||
beginSearchRom_();
|
||||
}
|
||||
else
|
||||
{
|
||||
beginWaitReset_();
|
||||
}
|
||||
return;
|
||||
case 0x33: // READ ROM
|
||||
resumeCommandFlag_ = false;
|
||||
beginWriteBytes_(rom_, 8, &OneWireSlave::noOpCallback_);
|
||||
return;
|
||||
case 0x55: // MATCH ROM
|
||||
resumeCommandFlag_ = false;
|
||||
beginReceiveBytes_(scratchpad_, 8, &OneWireSlave::matchRomBytesReceived_);
|
||||
return;
|
||||
case 0xCC: // SKIP ROM
|
||||
|
@ -35,6 +35,8 @@ public:
|
||||
//! Cancels any pending write operation, started by writeBit or write. If this function is called before the master asked for a bit, then nothing is sent to the master.
|
||||
void stopWrite();
|
||||
|
||||
void alarmed(bool value);
|
||||
|
||||
static byte crc8(const byte* data, short numBytes);
|
||||
|
||||
private:
|
||||
@ -103,6 +105,7 @@ private:
|
||||
static byte searchRomBitPos_;
|
||||
static bool searchRomInverse_;
|
||||
static bool resumeCommandFlag_;
|
||||
static bool alarmedFlag_;
|
||||
|
||||
static const byte* sendBuffer_;
|
||||
static byte* recvBuffer_;
|
||||
|
Loading…
Reference in New Issue
Block a user