Implementation of 1-Wire with added Alarm Search Functionality
Dependents: Max32630_One_Wire_Interface
Diff: OneWire_Masters/DS2465/DS2465.hpp
- Revision:
- 32:bce180b544ed
- Parent:
- 27:d5aaefa252f1
- Child:
- 33:a4c015046956
--- a/OneWire_Masters/DS2465/DS2465.hpp Tue Mar 29 16:36:12 2016 -0500 +++ b/OneWire_Masters/DS2465/DS2465.hpp Wed Mar 30 16:50:29 2016 -0500 @@ -11,12 +11,7 @@ class DS2465 : public OneWireMaster, public ISha256MacCoprocessor { -public: - enum Direction - { - DIRECTION_WRITE_ZERO = 0, - DIRECTION_WRITE_ONE = 1 - }; +public: enum PageRegion { @@ -44,6 +39,17 @@ ADDR_USER_MEM_PAGE_1 = 0xA0 }; + struct Config + { + bool c1WS, cSPU, cPDN, cAPU; + + std::uint8_t readByte() const; + std::uint8_t writeByte() const; + + void reset(); + Config() { reset(); } + }; + DS2465(mbed::I2C & I2C_interface, std::uint8_t I2C_address); // Const member functions should not change the settings of the DS2465 or affect the state of the 1-Wire bus. @@ -52,6 +58,8 @@ //Misc. Functions OneWireMaster::CmdResult Detect(void); OneWireMaster::CmdResult Reset(void); // Resets DS2465 (NOTE: This is NOT a 1-Wire Reset) + OneWireMaster::CmdResult WriteConfig(const Config & config); + Config CurrentConfig() const; // DS2465 Memory Commands OneWireMaster::CmdResult ReadMemory(std::uint8_t addr, std::uint8_t * buf, std::size_t bufLen, bool skip_set_pointer = false) const; @@ -62,20 +70,16 @@ // 1-Wire Master Commands virtual OneWireMaster::CmdResult OWInitMaster(void); virtual OneWireMaster::CmdResult OWReset(void); // Issues a 1-Wire Reset Pulse - virtual OneWireMaster::CmdResult OWTouchBit(std::uint8_t & sendrecvbit, OW_LEVEL after_level); - virtual OneWireMaster::CmdResult OWReadByte(std::uint8_t & recvbyte, OW_LEVEL after_level); - virtual OneWireMaster::CmdResult OWWriteByte(std::uint8_t sendbyte, OW_LEVEL after_level); + virtual OneWireMaster::CmdResult OWTouchBit(std::uint8_t & sendrecvbit, OWLevel after_level); + virtual OneWireMaster::CmdResult OWReadByte(std::uint8_t & recvbyte, OWLevel after_level); + virtual OneWireMaster::CmdResult OWWriteByte(std::uint8_t sendbyte, OWLevel after_level); virtual OneWireMaster::CmdResult OWReadBlock(std::uint8_t *rx_buf, std::uint8_t rx_len); virtual OneWireMaster::CmdResult OWWriteBlock(const std::uint8_t *tran_buf, std::uint8_t tran_len); OneWireMaster::CmdResult OWWriteBlock(bool tx_mac, const std::uint8_t *tran_buf, std::uint8_t tran_len); - virtual OneWireMaster::CmdResult OWSpeed(OW_SPEED new_speed); - virtual OneWireMaster::CmdResult OWLevel(OW_LEVEL new_level); - virtual OneWireMaster::CmdResult OWSearch(RomId & romId); + virtual OneWireMaster::CmdResult OWSetSpeed(OWSpeed new_speed); + virtual OneWireMaster::CmdResult OWSetLevel(OWLevel new_level); - OneWireMaster::CmdResult ConfigurePowerDown(bool pdn_enable); - OneWireMaster::CmdResult ConfigureAPU(bool apu_enable); - OneWireMaster::CmdResult ConfigureSPU(bool spu_enable); - OneWireMaster::CmdResult Triplet(Direction search_direction, std::uint8_t & status); + virtual OneWireMaster::CmdResult OWTriplet(SearchDirection & search_direction, std::uint8_t & sbr, std::uint8_t & tsb); //DS2465 Coprocessor Commands OneWireMaster::CmdResult Compute_NextMasterSecret(bool swap, unsigned int pageNum, PageRegion region); @@ -91,24 +95,14 @@ const std::uint8_t (&deviceScratchpad)[deviceScratchpad_len], const std::uint8_t (&SSecret_data)[SSecret_data_len]); private: - struct Config - { - bool c1WS, cSPU, cPDN, cAPU; - - std::uint8_t readByte() const; - std::uint8_t writeByte() const; - - void reset(); - Config() { reset(); } - }; mbed::I2C & m_I2C_interface; std::uint8_t m_I2C_address; Config m_curConfig; OneWireMaster::CmdResult CWriteMemory(std::uint8_t addr, const std::uint8_t * buf, std::size_t bufLen) const; - OneWireMaster::CmdResult WriteConfig(const Config & config); OneWireMaster::CmdResult PollBusy(std::uint8_t * pStatus = NULL); + OneWireMaster::CmdResult ConfigureLevel(OWLevel level); }; #endif