Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Committer:
IanBenzMaxim
Date:
Thu Jun 16 10:45:24 2016 -0500
Revision:
89:3a0e12c9b898
Parent:
88:cac71903b1cd
Child:
90:c233d1c265ff
Added iterator for Resume as a new class to differentiate.

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
IanBenzMaxim 77:529edb329ee0 33 #include "RomIterator.h"
IanBenzMaxim 76:84e6c4994e29 34
IanBenzMaxim 76:84e6c4994e29 35 using namespace OneWire;
IanBenzMaxim 76:84e6c4994e29 36
IanBenzMaxim 77:529edb329ee0 37 bool ForwardSearchRomIterator::lastDevice() const
IanBenzMaxim 76:84e6c4994e29 38 {
IanBenzMaxim 77:529edb329ee0 39 return searchState.last_device_flag;
IanBenzMaxim 76:84e6c4994e29 40 }
IanBenzMaxim 76:84e6c4994e29 41
IanBenzMaxim 77:529edb329ee0 42 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDevice()
IanBenzMaxim 76:84e6c4994e29 43 {
IanBenzMaxim 77:529edb329ee0 44 return master().OWFirst(searchState);
IanBenzMaxim 77:529edb329ee0 45 }
IanBenzMaxim 77:529edb329ee0 46
IanBenzMaxim 77:529edb329ee0 47 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextDevice()
IanBenzMaxim 77:529edb329ee0 48 {
IanBenzMaxim 77:529edb329ee0 49 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 50 }
IanBenzMaxim 76:84e6c4994e29 51
IanBenzMaxim 77:529edb329ee0 52 OneWireMaster::CmdResult ForwardSearchRomIterator::reselectCurrentDevice()
IanBenzMaxim 76:84e6c4994e29 53 {
IanBenzMaxim 77:529edb329ee0 54 return master().OWResume();
IanBenzMaxim 77:529edb329ee0 55 }
IanBenzMaxim 76:84e6c4994e29 56
IanBenzMaxim 77:529edb329ee0 57 OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDeviceInFamily(uint8_t familyCode)
IanBenzMaxim 77:529edb329ee0 58 {
IanBenzMaxim 77:529edb329ee0 59 searchState.findFamily(familyCode);
IanBenzMaxim 77:529edb329ee0 60 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 61 }
IanBenzMaxim 76:84e6c4994e29 62
IanBenzMaxim 77:529edb329ee0 63 OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextFamilyDevice()
IanBenzMaxim 76:84e6c4994e29 64 {
IanBenzMaxim 77:529edb329ee0 65 searchState.skipCurrentFamily();
IanBenzMaxim 77:529edb329ee0 66 return master().OWNext(searchState);
IanBenzMaxim 76:84e6c4994e29 67 }
IanBenzMaxim 76:84e6c4994e29 68
IanBenzMaxim 77:529edb329ee0 69 OneWireMaster::CmdResult SingledropRomIterator::selectDevice(const RomId & romId)
IanBenzMaxim 76:84e6c4994e29 70 {
IanBenzMaxim 77:529edb329ee0 71 return selectDevice();
IanBenzMaxim 76:84e6c4994e29 72 }
IanBenzMaxim 76:84e6c4994e29 73
IanBenzMaxim 77:529edb329ee0 74 OneWireMaster::CmdResult MultidropRomIterator::selectDevice(const RomId & romId)
IanBenzMaxim 76:84e6c4994e29 75 {
IanBenzMaxim 88:cac71903b1cd 76 return master().OWMatchRom(romId);
IanBenzMaxim 76:84e6c4994e29 77 }
IanBenzMaxim 89:3a0e12c9b898 78
IanBenzMaxim 89:3a0e12c9b898 79 OneWireMaster::CmdResult MultidropRomIteratorWithResume::selectDevice(const RomId & romId)
IanBenzMaxim 89:3a0e12c9b898 80 {
IanBenzMaxim 89:3a0e12c9b898 81 OneWireMaster::CmdResult result;
IanBenzMaxim 89:3a0e12c9b898 82
IanBenzMaxim 89:3a0e12c9b898 83 if (romId == lastRom)
IanBenzMaxim 89:3a0e12c9b898 84 {
IanBenzMaxim 89:3a0e12c9b898 85 result = master().OWResume();
IanBenzMaxim 89:3a0e12c9b898 86 }
IanBenzMaxim 89:3a0e12c9b898 87 else
IanBenzMaxim 89:3a0e12c9b898 88 {
IanBenzMaxim 89:3a0e12c9b898 89 result = master().OWMatchRom(romId);
IanBenzMaxim 89:3a0e12c9b898 90 lastRom = romId;
IanBenzMaxim 89:3a0e12c9b898 91 }
IanBenzMaxim 89:3a0e12c9b898 92
IanBenzMaxim 89:3a0e12c9b898 93 return result;
IanBenzMaxim 89:3a0e12c9b898 94 }