Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Committer:
mfruge
Date:
Tue Aug 13 14:42:37 2019 +0000
Revision:
142:85b71cfd617e
Parent:
120:200109b73e3c
Added functions to ROMCommands to add Alarm Search functionality

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 78:0cbbac7f2016 1 /******************************************************************//**
IanBenzMaxim 78:0cbbac7f2016 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
IanBenzMaxim 78:0cbbac7f2016 3 *
IanBenzMaxim 78:0cbbac7f2016 4 * Permission is hereby granted, free of charge, to any person obtaining a
IanBenzMaxim 78:0cbbac7f2016 5 * copy of this software and associated documentation files (the "Software"),
IanBenzMaxim 78:0cbbac7f2016 6 * to deal in the Software without restriction, including without limitation
IanBenzMaxim 78:0cbbac7f2016 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
IanBenzMaxim 78:0cbbac7f2016 8 * and/or sell copies of the Software, and to permit persons to whom the
IanBenzMaxim 78:0cbbac7f2016 9 * Software is furnished to do so, subject to the following conditions:
IanBenzMaxim 78:0cbbac7f2016 10 *
IanBenzMaxim 78:0cbbac7f2016 11 * The above copyright notice and this permission notice shall be included
IanBenzMaxim 78:0cbbac7f2016 12 * in all copies or substantial portions of the Software.
IanBenzMaxim 78:0cbbac7f2016 13 *
IanBenzMaxim 78:0cbbac7f2016 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
IanBenzMaxim 78:0cbbac7f2016 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
IanBenzMaxim 78:0cbbac7f2016 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IanBenzMaxim 78:0cbbac7f2016 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
IanBenzMaxim 78:0cbbac7f2016 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
IanBenzMaxim 78:0cbbac7f2016 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
IanBenzMaxim 78:0cbbac7f2016 20 * OTHER DEALINGS IN THE SOFTWARE.
IanBenzMaxim 78:0cbbac7f2016 21 *
IanBenzMaxim 78:0cbbac7f2016 22 * Except as contained in this notice, the name of Maxim Integrated
IanBenzMaxim 78:0cbbac7f2016 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
IanBenzMaxim 78:0cbbac7f2016 24 * Products, Inc. Branding Policy.
IanBenzMaxim 78:0cbbac7f2016 25 *
IanBenzMaxim 78:0cbbac7f2016 26 * The mere transfer of this software does not imply any licenses
IanBenzMaxim 78:0cbbac7f2016 27 * of trade secrets, proprietary technology, copyrights, patents,
IanBenzMaxim 78:0cbbac7f2016 28 * trademarks, maskwork rights, or any other form of intellectual
IanBenzMaxim 78:0cbbac7f2016 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
IanBenzMaxim 78:0cbbac7f2016 30 * ownership rights.
IanBenzMaxim 78:0cbbac7f2016 31 **********************************************************************/
IanBenzMaxim 78:0cbbac7f2016 32
j3 104:3f48daed532b 33 #include "RomId/RomIterator.h"
IanBenzMaxim 90:c233d1c265ff 34 #include "Masters/OneWireMaster.h"
IanBenzMaxim 76:84e6c4994e29 35
IanBenzMaxim 76:84e6c4994e29 36 using namespace OneWire;
IanBenzMaxim 90:c233d1c265ff 37 using namespace OneWire::RomCommands;
IanBenzMaxim 76:84e6c4994e29 38
IanBenzMaxim 77:529edb329ee0 39 bool ForwardSearchRomIterator::lastDevice() const
IanBenzMaxim 76:84e6c4994e29 40 {
IanBenzMaxim 77:529edb329ee0 41 return searchState.last_device_flag;
IanBenzMaxim 76:84e6c4994e29 42 }
IanBenzMaxim 76:84e6c4994e29 43
IanBenzMaxim 77:529edb329ee0 44 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDevice()
IanBenzMaxim 76:84e6c4994e29 45 {
IanBenzMaxim 90:c233d1c265ff 46 return OWFirst(master(), searchState);
IanBenzMaxim 77:529edb329ee0 47 }
IanBenzMaxim 77:529edb329ee0 48
IanBenzMaxim 77:529edb329ee0 49 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextDevice()
IanBenzMaxim 77:529edb329ee0 50 {
IanBenzMaxim 90:c233d1c265ff 51 return OWNext(master(), searchState);
IanBenzMaxim 76:84e6c4994e29 52 }
IanBenzMaxim 76:84e6c4994e29 53
IanBenzMaxim 77:529edb329ee0 54 OneWireMaster::CmdResult ForwardSearchRomIterator::reselectCurrentDevice()
IanBenzMaxim 76:84e6c4994e29 55 {
IanBenzMaxim 90:c233d1c265ff 56 return OWResume(master());
IanBenzMaxim 77:529edb329ee0 57 }
IanBenzMaxim 76:84e6c4994e29 58
IanBenzMaxim 77:529edb329ee0 59 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDeviceInFamily(uint8_t familyCode)
IanBenzMaxim 77:529edb329ee0 60 {
IanBenzMaxim 77:529edb329ee0 61 searchState.findFamily(familyCode);
IanBenzMaxim 90:c233d1c265ff 62 return OWNext(master(), searchState);
IanBenzMaxim 76:84e6c4994e29 63 }
IanBenzMaxim 76:84e6c4994e29 64
IanBenzMaxim 77:529edb329ee0 65 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextFamilyDevice()
IanBenzMaxim 76:84e6c4994e29 66 {
IanBenzMaxim 77:529edb329ee0 67 searchState.skipCurrentFamily();
IanBenzMaxim 90:c233d1c265ff 68 return OWNext(master(), searchState);
IanBenzMaxim 76:84e6c4994e29 69 }
IanBenzMaxim 76:84e6c4994e29 70
IanBenzMaxim 120:200109b73e3c 71 OneWireMaster::CmdResult SingledropRomIterator::selectDevice(const RomId &)
IanBenzMaxim 76:84e6c4994e29 72 {
IanBenzMaxim 77:529edb329ee0 73 return selectDevice();
IanBenzMaxim 76:84e6c4994e29 74 }
IanBenzMaxim 76:84e6c4994e29 75
IanBenzMaxim 77:529edb329ee0 76 OneWireMaster::CmdResult MultidropRomIterator::selectDevice(const RomId & romId)
IanBenzMaxim 76:84e6c4994e29 77 {
IanBenzMaxim 90:c233d1c265ff 78 return OWMatchRom(master(), romId);
IanBenzMaxim 76:84e6c4994e29 79 }
IanBenzMaxim 89:3a0e12c9b898 80
IanBenzMaxim 89:3a0e12c9b898 81 OneWireMaster::CmdResult MultidropRomIteratorWithResume::selectDevice(const RomId & romId)
IanBenzMaxim 89:3a0e12c9b898 82 {
IanBenzMaxim 89:3a0e12c9b898 83 OneWireMaster::CmdResult result;
IanBenzMaxim 89:3a0e12c9b898 84
IanBenzMaxim 89:3a0e12c9b898 85 if (romId == lastRom)
IanBenzMaxim 89:3a0e12c9b898 86 {
IanBenzMaxim 90:c233d1c265ff 87 result = OWResume(master());
IanBenzMaxim 89:3a0e12c9b898 88 }
IanBenzMaxim 89:3a0e12c9b898 89 else
IanBenzMaxim 89:3a0e12c9b898 90 {
IanBenzMaxim 90:c233d1c265ff 91 result = OWMatchRom(master(), romId);
IanBenzMaxim 89:3a0e12c9b898 92 lastRom = romId;
IanBenzMaxim 89:3a0e12c9b898 93 }
IanBenzMaxim 89:3a0e12c9b898 94
IanBenzMaxim 89:3a0e12c9b898 95 return result;
IanBenzMaxim 89:3a0e12c9b898 96 }