Implementation of 1-Wire with added Alarm Search Functionality
Dependents: Max32630_One_Wire_Interface
RomIterator.cpp@77:529edb329ee0, 2016-05-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |