1-Wire® library for mbed. Complete 1-Wire library that supports our silicon masters along with a bit-bang master on the MAX32600MBED platform with one common interface for mbed. Slave support has also been included and more slaves will be added as time permits.

Dependents:   MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more

Superseded by MaximInterface.

Committer:
IanBenzMaxim
Date:
Wed Mar 30 16:50:29 2016 -0500
Revision:
32:bce180b544ed
Parent:
26:a361e3f42ba5
Child:
63:422be898443a
1. Move the implementation of OWSearch() into OneWireMaster since it is a fairly complex algorithm that shouldn?t be implemented over and over. It will also match all other ROM function that are implemented there.
2. Create a new member function, OWTriplet(), in OneWireMaster to handle the virtual section of OWSearch(). Create a default implementation of OWTriplet() that uses OWReadByte() and OWWriteByte(). Masters only need to implement this function if they have a search accelerator of some sort.
3. Create type SearchState that will encapsulate all persistent data used by the search ROM functions. This will also make it easy to not have the search state part of the permanent OneWireMaster class data.
4. Rename OWSpeed() to OWSetSpeed() and OWLevel() to OWSetLevel() for naming consistency.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j3 3:644fc630f958 1 /******************************************************************//**
j3 3:644fc630f958 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
j3 3:644fc630f958 3 *
j3 3:644fc630f958 4 * Permission is hereby granted, free of charge, to any person obtaining a
j3 3:644fc630f958 5 * copy of this software and associated documentation files (the "Software"),
j3 3:644fc630f958 6 * to deal in the Software without restriction, including without limitation
j3 3:644fc630f958 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
j3 3:644fc630f958 8 * and/or sell copies of the Software, and to permit persons to whom the
j3 3:644fc630f958 9 * Software is furnished to do so, subject to the following conditions:
j3 3:644fc630f958 10 *
j3 3:644fc630f958 11 * The above copyright notice and this permission notice shall be included
j3 3:644fc630f958 12 * in all copies or substantial portions of the Software.
j3 3:644fc630f958 13 *
j3 3:644fc630f958 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
j3 3:644fc630f958 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
j3 3:644fc630f958 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
j3 3:644fc630f958 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
j3 3:644fc630f958 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
j3 3:644fc630f958 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
j3 3:644fc630f958 20 * OTHER DEALINGS IN THE SOFTWARE.
j3 3:644fc630f958 21 *
j3 3:644fc630f958 22 * Except as contained in this notice, the name of Maxim Integrated
j3 3:644fc630f958 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
j3 3:644fc630f958 24 * Products, Inc. Branding Policy.
j3 3:644fc630f958 25 *
j3 3:644fc630f958 26 * The mere transfer of this software does not imply any licenses
j3 3:644fc630f958 27 * of trade secrets, proprietary technology, copyrights, patents,
j3 3:644fc630f958 28 * trademarks, maskwork rights, or any other form of intellectual
j3 3:644fc630f958 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
j3 3:644fc630f958 30 * ownership rights.
j3 3:644fc630f958 31 **********************************************************************/
j3 3:644fc630f958 32
j3 3:644fc630f958 33
j3 3:644fc630f958 34 #ifndef DS2480B_H
j3 3:644fc630f958 35 #define DS2480B_H
j3 3:644fc630f958 36
j3 3:644fc630f958 37
j3 3:644fc630f958 38 #include "mbed.h"
IanBenzMaxim 24:8942d8478d68 39 #include "OneWire_Masters/OneWireMaster.h"
j3 3:644fc630f958 40
j3 3:644fc630f958 41
j3 15:f6cb0d906fb6 42 class Ds2480b: public OneWireMaster
j3 3:644fc630f958 43 {
j3 3:644fc630f958 44 public:
j3 3:644fc630f958 45
j3 3:644fc630f958 46 /**********************************************************//**
j3 3:644fc630f958 47 * @brief Ds2480b constructor
j3 3:644fc630f958 48 *
j3 3:644fc630f958 49 * @details allows user to use existing Serial object
j3 3:644fc630f958 50 *
j3 3:644fc630f958 51 * On Entry:
j3 3:644fc630f958 52 * @param[in] p_serial - pointer to existing serial object
j3 3:644fc630f958 53 *
j3 3:644fc630f958 54 * On Exit:
j3 3:644fc630f958 55 * @return
j3 3:644fc630f958 56 **************************************************************/
j3 16:883becbd85f8 57 Ds2480b(Serial &p_serial);
j3 3:644fc630f958 58
j3 3:644fc630f958 59
j3 3:644fc630f958 60 /**********************************************************//**
j3 3:644fc630f958 61 * @brief Ds2480b constructor
j3 3:644fc630f958 62 *
j3 3:644fc630f958 63 * @details Object instantiates a new serial object with no
j3 3:644fc630f958 64 * public access
j3 3:644fc630f958 65 *
j3 3:644fc630f958 66 * On Entry:
j3 3:644fc630f958 67 * @param[in] tx - tx pin of uart to be used
j3 3:644fc630f958 68 * @param[in] rx - rx pin of uart to be used
j3 3:644fc630f958 69 * @param[in] baud - baudrate for uart
j3 3:644fc630f958 70 *
j3 3:644fc630f958 71 * On Exit:
j3 3:644fc630f958 72 * @return
j3 3:644fc630f958 73 **************************************************************/
j3 3:644fc630f958 74 Ds2480b(PinName tx, PinName rx, uint32_t baud);
j3 3:644fc630f958 75
j3 3:644fc630f958 76
j3 3:644fc630f958 77 /**********************************************************//**
j3 3:644fc630f958 78 * @brief Ds2480b destructor
j3 3:644fc630f958 79 *
j3 3:644fc630f958 80 * @details deletes serial object if owner
j3 3:644fc630f958 81 *
j3 3:644fc630f958 82 * On Entry:
j3 3:644fc630f958 83 *
j3 3:644fc630f958 84 * On Exit:
j3 3:644fc630f958 85 * @return
j3 3:644fc630f958 86 **************************************************************/
j3 15:f6cb0d906fb6 87 virtual ~Ds2480b();
j3 3:644fc630f958 88
j3 3:644fc630f958 89
j3 23:e8e403d61359 90 //Part of OneWireMaster that should be implemented for each master
j3 23:e8e403d61359 91 //See OneWireMaster.h for documentation
j3 15:f6cb0d906fb6 92
j3 23:e8e403d61359 93 virtual OneWireMaster::CmdResult OWInitMaster(void);
j3 14:7b2886a50321 94
j3 23:e8e403d61359 95 virtual OneWireMaster::CmdResult OWReset(void);
j3 3:644fc630f958 96
IanBenzMaxim 32:bce180b544ed 97 virtual OneWireMaster::CmdResult OWTouchBit(uint8_t & sendrecvbit, OWLevel after_level);
j3 17:b646b1e3970b 98
IanBenzMaxim 32:bce180b544ed 99 virtual OneWireMaster::CmdResult OWWriteByte(uint8_t sendbyte, OWLevel after_level);
j3 3:644fc630f958 100
IanBenzMaxim 32:bce180b544ed 101 virtual OneWireMaster::CmdResult OWReadByte(uint8_t & recvbyte, OWLevel after_level);
j3 17:b646b1e3970b 102
j3 23:e8e403d61359 103 virtual OneWireMaster::CmdResult OWWriteBlock(const uint8_t *tran_buf, uint8_t tran_len);
j3 23:e8e403d61359 104
j3 23:e8e403d61359 105 virtual OneWireMaster::CmdResult OWReadBlock(uint8_t *rx_buf, uint8_t rx_len);
j3 3:644fc630f958 106
j3 23:e8e403d61359 107 virtual OneWireMaster::CmdResult OWSearch(RomId & romId);
j3 23:e8e403d61359 108
IanBenzMaxim 32:bce180b544ed 109 virtual OneWireMaster::CmdResult OWSetSpeed(OWSpeed new_speed);
j3 3:644fc630f958 110
IanBenzMaxim 32:bce180b544ed 111 virtual OneWireMaster::CmdResult OWSetLevel(OWLevel new_level);
j3 3:644fc630f958 112
j3 3:644fc630f958 113 private:
j3 3:644fc630f958 114
j3 3:644fc630f958 115 Serial *_p_serial;
j3 3:644fc630f958 116 bool _serial_owner;
j3 3:644fc630f958 117 };
j3 3:644fc630f958 118
j3 3:644fc630f958 119 #endif /*DS2480B_H*/
j3 3:644fc630f958 120