Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

RomIterator.cpp

Committer:
IanBenzMaxim
Date:
2016-05-16
Revision:
77:529edb329ee0
Parent:
RomCommands.cpp@ 76:84e6c4994e29
Child:
78:0cbbac7f2016

File content as of revision 77:529edb329ee0:

#include "RomIterator.h"

using namespace OneWire;

bool ForwardSearchRomIterator::lastDevice() const
{
    return searchState.last_device_flag;
}

OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDevice()
{
    return master().OWFirst(searchState);
}

OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextDevice()
{
    return master().OWNext(searchState);
}

OneWireMaster::CmdResult ForwardSearchRomIterator::reselectCurrentDevice()
{
    return master().OWResume();
}

OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDeviceInFamily(uint8_t familyCode)
{
    searchState.findFamily(familyCode);
    return master().OWNext(searchState);
}

OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextFamilyDevice()
{
    searchState.skipCurrentFamily();
    return master().OWNext(searchState);
}

OneWireMaster::CmdResult SingledropRomIterator::selectDevice(const RomId & romId)
{
    return selectDevice();
}

OneWireMaster::CmdResult MultidropRomIterator::selectDevice(const RomId & romId)
{
    OneWireMaster::CmdResult result;
    if (romId == lastRom)
    {
        result = master().OWResume();
    }
    else
    {
        result = master().OWMatchRom(romId);
        lastRom = romId;
    }
    return result;
}