Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Committer:
j3
Date:
Sat Jan 30 23:00:57 2016 +0000
Revision:
1:91e52f8ab8bf
Child:
2:02d228c25fd4
init commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j3 1:91e52f8ab8bf 1 /******************************************************************//**
j3 1:91e52f8ab8bf 2 * @file ds248x.cpp
j3 1:91e52f8ab8bf 3 *
j3 1:91e52f8ab8bf 4 * @author Justin Jordan
j3 1:91e52f8ab8bf 5 *
j3 1:91e52f8ab8bf 6 * @version 0.0.0
j3 1:91e52f8ab8bf 7 *
j3 1:91e52f8ab8bf 8 * Started: 30JAN16
j3 1:91e52f8ab8bf 9 *
j3 1:91e52f8ab8bf 10 * Updated:
j3 1:91e52f8ab8bf 11 *
j3 1:91e52f8ab8bf 12 * @brief Source file for Ds248x I2C to 1-wire master
j3 1:91e52f8ab8bf 13 ***********************************************************************
j3 1:91e52f8ab8bf 14 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
j3 1:91e52f8ab8bf 15 *
j3 1:91e52f8ab8bf 16 * Permission is hereby granted, free of charge, to any person obtaining a
j3 1:91e52f8ab8bf 17 * copy of this software and associated documentation files (the "Software"),
j3 1:91e52f8ab8bf 18 * to deal in the Software without restriction, including without limitation
j3 1:91e52f8ab8bf 19 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
j3 1:91e52f8ab8bf 20 * and/or sell copies of the Software, and to permit persons to whom the
j3 1:91e52f8ab8bf 21 * Software is furnished to do so, subject to the following conditions:
j3 1:91e52f8ab8bf 22 *
j3 1:91e52f8ab8bf 23 * The above copyright notice and this permission notice shall be included
j3 1:91e52f8ab8bf 24 * in all copies or substantial portions of the Software.
j3 1:91e52f8ab8bf 25 *
j3 1:91e52f8ab8bf 26 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
j3 1:91e52f8ab8bf 27 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
j3 1:91e52f8ab8bf 28 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
j3 1:91e52f8ab8bf 29 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
j3 1:91e52f8ab8bf 30 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
j3 1:91e52f8ab8bf 31 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
j3 1:91e52f8ab8bf 32 * OTHER DEALINGS IN THE SOFTWARE.
j3 1:91e52f8ab8bf 33 *
j3 1:91e52f8ab8bf 34 * Except as contained in this notice, the name of Maxim Integrated
j3 1:91e52f8ab8bf 35 * Products, Inc. shall not be used except as stated in the Maxim Integrated
j3 1:91e52f8ab8bf 36 * Products, Inc. Branding Policy.
j3 1:91e52f8ab8bf 37 *
j3 1:91e52f8ab8bf 38 * The mere transfer of this software does not imply any licenses
j3 1:91e52f8ab8bf 39 * of trade secrets, proprietary technology, copyrights, patents,
j3 1:91e52f8ab8bf 40 * trademarks, maskwork rights, or any other form of intellectual
j3 1:91e52f8ab8bf 41 * property whatsoever. Maxim Integrated Products, Inc. retains all
j3 1:91e52f8ab8bf 42 * ownership rights.
j3 1:91e52f8ab8bf 43 **********************************************************************/
j3 1:91e52f8ab8bf 44
j3 1:91e52f8ab8bf 45
j3 1:91e52f8ab8bf 46 #include "ds248x.h"
j3 1:91e52f8ab8bf 47
j3 1:91e52f8ab8bf 48
j3 1:91e52f8ab8bf 49 //*********************************************************************
j3 1:91e52f8ab8bf 50 Ds248x::Ds248x(I2C *p_i2c_bus, ds248x_i2c_adrs_t adrs)
j3 1:91e52f8ab8bf 51 {
j3 1:91e52f8ab8bf 52 _p_i2c_bus = p_i2c_bus;
j3 1:91e52f8ab8bf 53 _w_adrs = (adrs << 1);
j3 1:91e52f8ab8bf 54 _r_adrs = (_w_adrs | 1);
j3 1:91e52f8ab8bf 55 i2c_owner = false;
j3 1:91e52f8ab8bf 56 }
j3 1:91e52f8ab8bf 57
j3 1:91e52f8ab8bf 58
j3 1:91e52f8ab8bf 59 //*********************************************************************
j3 1:91e52f8ab8bf 60 Ds248x::Ds248x(PinName sda, PinName scl, ds248x_i2c_adrs_t adrs)
j3 1:91e52f8ab8bf 61 {
j3 1:91e52f8ab8bf 62 _p_i2c_bus = new I2C(sda, scl);
j3 1:91e52f8ab8bf 63 _w_adrs = (adrs << 1);
j3 1:91e52f8ab8bf 64 _r_adrs = (_w_adrs | 1);
j3 1:91e52f8ab8bf 65 i2c_owner = true;
j3 1:91e52f8ab8bf 66 }
j3 1:91e52f8ab8bf 67
j3 1:91e52f8ab8bf 68
j3 1:91e52f8ab8bf 69 //*********************************************************************
j3 1:91e52f8ab8bf 70 Ds248x::~Ds248x()
j3 1:91e52f8ab8bf 71 {
j3 1:91e52f8ab8bf 72 if(i2c_owner)
j3 1:91e52f8ab8bf 73 {
j3 1:91e52f8ab8bf 74 delete _p_i2c_bus;
j3 1:91e52f8ab8bf 75 }
j3 1:91e52f8ab8bf 76 }
j3 1:91e52f8ab8bf 77
j3 1:91e52f8ab8bf 78
j3 1:91e52f8ab8bf 79 //*********************************************************************
j3 1:91e52f8ab8bf 80 uint8_t Ds248x::detect(void)
j3 1:91e52f8ab8bf 81 {
j3 1:91e52f8ab8bf 82 uint8_t rtn_val;
j3 1:91e52f8ab8bf 83 return(rtn_val);
j3 1:91e52f8ab8bf 84 }
j3 1:91e52f8ab8bf 85
j3 1:91e52f8ab8bf 86
j3 1:91e52f8ab8bf 87 //*********************************************************************
j3 1:91e52f8ab8bf 88 uint8_t Ds248x::reset(void)
j3 1:91e52f8ab8bf 89 {
j3 1:91e52f8ab8bf 90 uint8_t rtn_val;
j3 1:91e52f8ab8bf 91 return(rtn_val);
j3 1:91e52f8ab8bf 92 }
j3 1:91e52f8ab8bf 93
j3 1:91e52f8ab8bf 94
j3 1:91e52f8ab8bf 95 //*********************************************************************
j3 1:91e52f8ab8bf 96 uint8_t Ds248x::write_config(uint8_t config)
j3 1:91e52f8ab8bf 97 {
j3 1:91e52f8ab8bf 98 uint8_t rtn_val;
j3 1:91e52f8ab8bf 99 return(rtn_val);
j3 1:91e52f8ab8bf 100 }
j3 1:91e52f8ab8bf 101
j3 1:91e52f8ab8bf 102
j3 1:91e52f8ab8bf 103 //*********************************************************************
j3 1:91e52f8ab8bf 104
j3 1:91e52f8ab8bf 105
j3 1:91e52f8ab8bf 106 //*********************************************************************
j3 1:91e52f8ab8bf 107 uint8_t Ds248x::OWReset()
j3 1:91e52f8ab8bf 108 {
j3 1:91e52f8ab8bf 109 uint8_t rtn_val;
j3 1:91e52f8ab8bf 110 return(rtn_val);
j3 1:91e52f8ab8bf 111 }
j3 1:91e52f8ab8bf 112
j3 1:91e52f8ab8bf 113
j3 1:91e52f8ab8bf 114 //*********************************************************************
j3 1:91e52f8ab8bf 115 void Ds248x::OWWriteBit(uint8_t sendbit)
j3 1:91e52f8ab8bf 116 {
j3 1:91e52f8ab8bf 117
j3 1:91e52f8ab8bf 118 }
j3 1:91e52f8ab8bf 119
j3 1:91e52f8ab8bf 120
j3 1:91e52f8ab8bf 121 //*********************************************************************
j3 1:91e52f8ab8bf 122 uint8_t Ds248x::OWReadBit()
j3 1:91e52f8ab8bf 123 {
j3 1:91e52f8ab8bf 124 uint8_t rtn_val;
j3 1:91e52f8ab8bf 125 return(rtn_val);
j3 1:91e52f8ab8bf 126 }
j3 1:91e52f8ab8bf 127
j3 1:91e52f8ab8bf 128
j3 1:91e52f8ab8bf 129 //*********************************************************************
j3 1:91e52f8ab8bf 130 uint8_t Ds248x::OWTouchBit(uint8_t sendbit)
j3 1:91e52f8ab8bf 131 {
j3 1:91e52f8ab8bf 132 uint8_t rtn_val;
j3 1:91e52f8ab8bf 133 return(rtn_val);
j3 1:91e52f8ab8bf 134 }
j3 1:91e52f8ab8bf 135
j3 1:91e52f8ab8bf 136
j3 1:91e52f8ab8bf 137 //*********************************************************************
j3 1:91e52f8ab8bf 138 void Ds248x::OWWRiteByte(uint8_t sendbyte)
j3 1:91e52f8ab8bf 139 {
j3 1:91e52f8ab8bf 140
j3 1:91e52f8ab8bf 141 }
j3 1:91e52f8ab8bf 142
j3 1:91e52f8ab8bf 143
j3 1:91e52f8ab8bf 144 //*********************************************************************
j3 1:91e52f8ab8bf 145 uint8_t Ds248x::OWReadByte(void)
j3 1:91e52f8ab8bf 146 {
j3 1:91e52f8ab8bf 147 uint8_t rtn_val;
j3 1:91e52f8ab8bf 148 return(rtn_val);
j3 1:91e52f8ab8bf 149 }
j3 1:91e52f8ab8bf 150
j3 1:91e52f8ab8bf 151
j3 1:91e52f8ab8bf 152 //*********************************************************************
j3 1:91e52f8ab8bf 153 uint8_t Ds248x::OWTouchByte(uint8_t sendbyte)
j3 1:91e52f8ab8bf 154 {
j3 1:91e52f8ab8bf 155 uint8_t rtn_val;
j3 1:91e52f8ab8bf 156 return(rtn_val);
j3 1:91e52f8ab8bf 157 }
j3 1:91e52f8ab8bf 158
j3 1:91e52f8ab8bf 159
j3 1:91e52f8ab8bf 160 //*********************************************************************
j3 1:91e52f8ab8bf 161 void Ds248x::OWBlock(uint8_t *tran_buf, uint8_t tran_len)
j3 1:91e52f8ab8bf 162 {
j3 1:91e52f8ab8bf 163
j3 1:91e52f8ab8bf 164 }
j3 1:91e52f8ab8bf 165
j3 1:91e52f8ab8bf 166
j3 1:91e52f8ab8bf 167 //*********************************************************************
j3 1:91e52f8ab8bf 168 void Ds248x::OWFirst(void)
j3 1:91e52f8ab8bf 169 {
j3 1:91e52f8ab8bf 170
j3 1:91e52f8ab8bf 171 }
j3 1:91e52f8ab8bf 172
j3 1:91e52f8ab8bf 173
j3 1:91e52f8ab8bf 174 //*********************************************************************
j3 1:91e52f8ab8bf 175 uint8_t Ds248x::OWNext(void)
j3 1:91e52f8ab8bf 176 {
j3 1:91e52f8ab8bf 177 uint8_t rtn_val;
j3 1:91e52f8ab8bf 178 return(rtn_val);
j3 1:91e52f8ab8bf 179 }
j3 1:91e52f8ab8bf 180
j3 1:91e52f8ab8bf 181
j3 1:91e52f8ab8bf 182 //*********************************************************************
j3 1:91e52f8ab8bf 183 uint8_t Ds248x::OWVerify(void)
j3 1:91e52f8ab8bf 184 {
j3 1:91e52f8ab8bf 185 uint8_t rtn_val;
j3 1:91e52f8ab8bf 186 return(rtn_val);
j3 1:91e52f8ab8bf 187 }
j3 1:91e52f8ab8bf 188
j3 1:91e52f8ab8bf 189
j3 1:91e52f8ab8bf 190 //*********************************************************************
j3 1:91e52f8ab8bf 191 void Ds248x::OWTargetSetup(uint8_t family_code)
j3 1:91e52f8ab8bf 192 {
j3 1:91e52f8ab8bf 193
j3 1:91e52f8ab8bf 194 }
j3 1:91e52f8ab8bf 195
j3 1:91e52f8ab8bf 196
j3 1:91e52f8ab8bf 197 //*********************************************************************
j3 1:91e52f8ab8bf 198 void Ds248x::OWFamilySkipSetup(void)
j3 1:91e52f8ab8bf 199 {
j3 1:91e52f8ab8bf 200
j3 1:91e52f8ab8bf 201 }
j3 1:91e52f8ab8bf 202
j3 1:91e52f8ab8bf 203
j3 1:91e52f8ab8bf 204 //*********************************************************************
j3 1:91e52f8ab8bf 205 uint8_t Ds248x::OWSearch(void)
j3 1:91e52f8ab8bf 206 {
j3 1:91e52f8ab8bf 207 uint8_t rtn_val;
j3 1:91e52f8ab8bf 208 return(rtn_val);
j3 1:91e52f8ab8bf 209 }
j3 1:91e52f8ab8bf 210
j3 1:91e52f8ab8bf 211
j3 1:91e52f8ab8bf 212 //*********************************************************************
j3 1:91e52f8ab8bf 213 uint8_t Ds248x::OWSpeed(uint8_t new_speed)
j3 1:91e52f8ab8bf 214 {
j3 1:91e52f8ab8bf 215 uint8_t rtn_val;
j3 1:91e52f8ab8bf 216 return(rtn_val);
j3 1:91e52f8ab8bf 217 }
j3 1:91e52f8ab8bf 218
j3 1:91e52f8ab8bf 219
j3 1:91e52f8ab8bf 220 //*********************************************************************
j3 1:91e52f8ab8bf 221 uint8_t Ds248x::OWLevel(uint8_t new_level)
j3 1:91e52f8ab8bf 222 {
j3 1:91e52f8ab8bf 223 uint8_t rtn_val;
j3 1:91e52f8ab8bf 224 return(rtn_val);
j3 1:91e52f8ab8bf 225 }
j3 1:91e52f8ab8bf 226
j3 1:91e52f8ab8bf 227
j3 1:91e52f8ab8bf 228 //*********************************************************************
j3 1:91e52f8ab8bf 229 uint8_t Ds248x::OWWriteBytePower(uint8_t sendbyte)
j3 1:91e52f8ab8bf 230 {
j3 1:91e52f8ab8bf 231 uint8_t rtn_val;
j3 1:91e52f8ab8bf 232 return(rtn_val);
j3 1:91e52f8ab8bf 233 }
j3 1:91e52f8ab8bf 234
j3 1:91e52f8ab8bf 235
j3 1:91e52f8ab8bf 236 //*********************************************************************
j3 1:91e52f8ab8bf 237 uint8_t Ds248x::OWReadBitPower(uint8_t applyPowerResponse)
j3 1:91e52f8ab8bf 238 {
j3 1:91e52f8ab8bf 239 uint8_t rtn_val;
j3 1:91e52f8ab8bf 240 return(rtn_val);
j3 1:91e52f8ab8bf 241 }
j3 1:91e52f8ab8bf 242
j3 1:91e52f8ab8bf 243
j3 1:91e52f8ab8bf 244 //*********************************************************************
j3 1:91e52f8ab8bf 245 uint8_t Ds248x::calc_crc8(uint8_t data)
j3 1:91e52f8ab8bf 246 {
j3 1:91e52f8ab8bf 247 uint8_t rtn_val;
j3 1:91e52f8ab8bf 248 return(rtn_val);
j3 1:91e52f8ab8bf 249 }