Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Committer:
IanBenzMaxim
Date:
Mon May 16 10:36:30 2016 -0500
Revision:
77:529edb329ee0
Parent:
RomCommands.cpp@76:84e6c4994e29
Child:
78:0cbbac7f2016
Added iterators for selecting 1-Wire devices on the bus and added support iterator support to OneWireSlave class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 77:529edb329ee0 1 #include "RomIterator.h"
IanBenzMaxim 76:84e6c4994e29 2
IanBenzMaxim 76:84e6c4994e29 3 using namespace OneWire;
IanBenzMaxim 76:84e6c4994e29 4
IanBenzMaxim 77:529edb329ee0 5 bool ForwardSearchRomIterator::lastDevice() const
IanBenzMaxim 76:84e6c4994e29 6 {
IanBenzMaxim 77:529edb329ee0 7 return searchState.last_device_flag;
IanBenzMaxim 76:84e6c4994e29 8 }
IanBenzMaxim 76:84e6c4994e29 9
IanBenzMaxim 77:529edb329ee0 10 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDevice()
IanBenzMaxim 76:84e6c4994e29 11 {
IanBenzMaxim 77:529edb329ee0 12 return master().OWFirst(searchState);
IanBenzMaxim 77:529edb329ee0 13 }
IanBenzMaxim 77:529edb329ee0 14
IanBenzMaxim 77:529edb329ee0 15 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextDevice()
IanBenzMaxim 77:529edb329ee0 16 {
IanBenzMaxim 77:529edb329ee0 17 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 18 }
IanBenzMaxim 76:84e6c4994e29 19
IanBenzMaxim 77:529edb329ee0 20 OneWireMaster::CmdResult ForwardSearchRomIterator::reselectCurrentDevice()
IanBenzMaxim 76:84e6c4994e29 21 {
IanBenzMaxim 77:529edb329ee0 22 return master().OWResume();
IanBenzMaxim 77:529edb329ee0 23 }
IanBenzMaxim 76:84e6c4994e29 24
IanBenzMaxim 77:529edb329ee0 25 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDeviceInFamily(uint8_t familyCode)
IanBenzMaxim 77:529edb329ee0 26 {
IanBenzMaxim 77:529edb329ee0 27 searchState.findFamily(familyCode);
IanBenzMaxim 77:529edb329ee0 28 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 29 }
IanBenzMaxim 76:84e6c4994e29 30
IanBenzMaxim 77:529edb329ee0 31 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextFamilyDevice()
IanBenzMaxim 76:84e6c4994e29 32 {
IanBenzMaxim 77:529edb329ee0 33 searchState.skipCurrentFamily();
IanBenzMaxim 77:529edb329ee0 34 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 35 }
IanBenzMaxim 76:84e6c4994e29 36
IanBenzMaxim 77:529edb329ee0 37 OneWireMaster::CmdResult SingledropRomIterator::selectDevice(const RomId & romId)
IanBenzMaxim 76:84e6c4994e29 38 {
IanBenzMaxim 77:529edb329ee0 39 return selectDevice();
IanBenzMaxim 76:84e6c4994e29 40 }
IanBenzMaxim 76:84e6c4994e29 41
IanBenzMaxim 77:529edb329ee0 42 OneWireMaster::CmdResult MultidropRomIterator::selectDevice(const RomId & romId)
IanBenzMaxim 76:84e6c4994e29 43 {
IanBenzMaxim 76:84e6c4994e29 44 OneWireMaster::CmdResult result;
IanBenzMaxim 77:529edb329ee0 45 if (romId == lastRom)
IanBenzMaxim 76:84e6c4994e29 46 {
IanBenzMaxim 77:529edb329ee0 47 result = master().OWResume();
IanBenzMaxim 76:84e6c4994e29 48 }
IanBenzMaxim 77:529edb329ee0 49 else
IanBenzMaxim 76:84e6c4994e29 50 {
IanBenzMaxim 77:529edb329ee0 51 result = master().OWMatchRom(romId);
IanBenzMaxim 77:529edb329ee0 52 lastRom = romId;
IanBenzMaxim 76:84e6c4994e29 53 }
IanBenzMaxim 76:84e6c4994e29 54 return result;
IanBenzMaxim 76:84e6c4994e29 55 }