Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Committer:
j3
Date:
Fri Jun 24 21:06:46 2016 +0000
Revision:
93:e496a45ce796
Parent:
90:c233d1c265ff
Child:
98:c4ac93efc036
added autodoc markups for DS2413 and DS28E17 classes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IanBenzMaxim 90:c233d1c265ff 1 #ifndef OneWire_RomCommands
IanBenzMaxim 90:c233d1c265ff 2 #define OneWire_RomCommands
IanBenzMaxim 90:c233d1c265ff 3
IanBenzMaxim 90:c233d1c265ff 4 #include <stdint.h>
IanBenzMaxim 90:c233d1c265ff 5 #include "RomId.h"
IanBenzMaxim 90:c233d1c265ff 6 #include "Masters/OneWireMaster.h"
IanBenzMaxim 90:c233d1c265ff 7
j3 93:e496a45ce796 8
IanBenzMaxim 90:c233d1c265ff 9 namespace OneWire
IanBenzMaxim 90:c233d1c265ff 10 {
IanBenzMaxim 90:c233d1c265ff 11 namespace RomCommands
IanBenzMaxim 90:c233d1c265ff 12 {
IanBenzMaxim 90:c233d1c265ff 13 /// State used by all ROM ID search functions.
IanBenzMaxim 90:c233d1c265ff 14 struct SearchState
IanBenzMaxim 90:c233d1c265ff 15 {
IanBenzMaxim 90:c233d1c265ff 16 RomId romId;
IanBenzMaxim 90:c233d1c265ff 17 uint8_t last_discrepancy;
IanBenzMaxim 90:c233d1c265ff 18 uint8_t last_family_discrepancy;
IanBenzMaxim 90:c233d1c265ff 19 bool last_device_flag;
IanBenzMaxim 90:c233d1c265ff 20
IanBenzMaxim 90:c233d1c265ff 21 /// Reset to the search state to start at the beginning.
IanBenzMaxim 90:c233d1c265ff 22 void reset();
IanBenzMaxim 90:c233d1c265ff 23
IanBenzMaxim 90:c233d1c265ff 24 /// Setup the search to find the device type 'family_code'
IanBenzMaxim 90:c233d1c265ff 25 /// on the next call to OWNext() if it is present.
IanBenzMaxim 90:c233d1c265ff 26 void findFamily(uint8_t familyCode);
IanBenzMaxim 90:c233d1c265ff 27
IanBenzMaxim 90:c233d1c265ff 28 /// Setup the search to skip the current device type on the
IanBenzMaxim 90:c233d1c265ff 29 /// next call to OWNext().
IanBenzMaxim 90:c233d1c265ff 30 void skipCurrentFamily();
IanBenzMaxim 90:c233d1c265ff 31
IanBenzMaxim 90:c233d1c265ff 32 SearchState() { reset(); }
IanBenzMaxim 90:c233d1c265ff 33 };
IanBenzMaxim 90:c233d1c265ff 34
j3 93:e496a45ce796 35 ///Find the 'first' devices on the 1-Wire bus.
IanBenzMaxim 90:c233d1c265ff 36 OneWireMaster::CmdResult OWFirst(OneWireMaster & master, SearchState & searchState);
IanBenzMaxim 90:c233d1c265ff 37
IanBenzMaxim 90:c233d1c265ff 38 /// Find the 'next' devices on the 1-Wire bus.
IanBenzMaxim 90:c233d1c265ff 39 OneWireMaster::CmdResult OWNext(OneWireMaster & master, SearchState & searchState);
IanBenzMaxim 90:c233d1c265ff 40
IanBenzMaxim 90:c233d1c265ff 41 /// Verify that the device with the specified ROM ID is present.
IanBenzMaxim 90:c233d1c265ff 42 OneWireMaster::CmdResult OWVerify(OneWireMaster & master, const RomId & romId);
IanBenzMaxim 90:c233d1c265ff 43
IanBenzMaxim 90:c233d1c265ff 44 /// Use Read ROM command to read ROM ID from device on bus.
IanBenzMaxim 90:c233d1c265ff 45 /// @note Only use this command with a single drop bus, data
IanBenzMaxim 90:c233d1c265ff 46 /// collisions will occur if more than 1 device on bus.
IanBenzMaxim 90:c233d1c265ff 47 /// @param[out] romId ROM ID read from device.
IanBenzMaxim 90:c233d1c265ff 48 OneWireMaster::CmdResult OWReadRom(OneWireMaster & master, RomId & romId);
IanBenzMaxim 90:c233d1c265ff 49
IanBenzMaxim 90:c233d1c265ff 50 /// Issue Skip ROM command on bus.
IanBenzMaxim 90:c233d1c265ff 51 /// @note Only use this command with a single drop bus, data
IanBenzMaxim 90:c233d1c265ff 52 /// collisions will occur if more than 1 device on bus.
IanBenzMaxim 90:c233d1c265ff 53 OneWireMaster::CmdResult OWSkipRom(OneWireMaster & master);
IanBenzMaxim 90:c233d1c265ff 54
IanBenzMaxim 90:c233d1c265ff 55 /// Use the Match ROM command to select the device by its known ID.
IanBenzMaxim 90:c233d1c265ff 56 /// @note This command causes all devices supporting Overdrive
IanBenzMaxim 90:c233d1c265ff 57 /// mode to switch to Overdrive timing.
IanBenzMaxim 90:c233d1c265ff 58 /// @param[in] romId ROM ID of device to select.
IanBenzMaxim 90:c233d1c265ff 59 OneWireMaster::CmdResult OWMatchRom(OneWireMaster & master, const RomId & romId);
IanBenzMaxim 90:c233d1c265ff 60
IanBenzMaxim 90:c233d1c265ff 61 /// Issue Overdrive Skip ROM command on bus.
IanBenzMaxim 90:c233d1c265ff 62 /// @note This command causes all devices supporting Overdrive
IanBenzMaxim 90:c233d1c265ff 63 /// mode to switch to Overdrive timing.
IanBenzMaxim 90:c233d1c265ff 64 /// @note Only use this command with a single drop bus, data
IanBenzMaxim 90:c233d1c265ff 65 /// collisions will occur if more than 1 device on bus.
IanBenzMaxim 90:c233d1c265ff 66 OneWireMaster::CmdResult OWOverdriveSkipRom(OneWireMaster & master);
IanBenzMaxim 90:c233d1c265ff 67
IanBenzMaxim 90:c233d1c265ff 68 /// Use the Overdrive Match ROM command to select the device by its known ID.
IanBenzMaxim 90:c233d1c265ff 69 /// @param[in] romId ROM ID of device to select.
IanBenzMaxim 90:c233d1c265ff 70 OneWireMaster::CmdResult OWOverdriveMatchRom(OneWireMaster & master, const RomId & romId);
IanBenzMaxim 90:c233d1c265ff 71
IanBenzMaxim 90:c233d1c265ff 72 /// Perform a Resume ROM command on bus.
IanBenzMaxim 90:c233d1c265ff 73 /// @details Resumes communication with the last device selected
IanBenzMaxim 90:c233d1c265ff 74 /// though a Match ROM or Search ROM operation.
IanBenzMaxim 90:c233d1c265ff 75 OneWireMaster::CmdResult OWResume(OneWireMaster & master);
IanBenzMaxim 90:c233d1c265ff 76
IanBenzMaxim 90:c233d1c265ff 77 /// Find device on the 1-Wire bus.
IanBenzMaxim 90:c233d1c265ff 78 /// @details This command uses the Search ROM command to enumerate all 1-Wire devices in sequence.
IanBenzMaxim 90:c233d1c265ff 79 /// Begin with a new search state and continue using the same search state until the last
IanBenzMaxim 90:c233d1c265ff 80 /// device flag is set which indicates that all devices have been discovered.
IanBenzMaxim 90:c233d1c265ff 81 OneWireMaster::CmdResult OWSearch(OneWireMaster & master, SearchState & searchState);
IanBenzMaxim 90:c233d1c265ff 82 }
IanBenzMaxim 90:c233d1c265ff 83 }
IanBenzMaxim 90:c233d1c265ff 84
IanBenzMaxim 90:c233d1c265ff 85 #endif