Library to interface with 1-wire through the DS2480B

Dependents:   DS2480B_1_Wire_Master

Committer:
giorgos2405
Date:
Mon Aug 29 14:22:20 2016 +0000
Revision:
0:07f0cd3758fa
University of Glasgow MSc Project;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giorgos2405 0:07f0cd3758fa 1 #include "mbed.h"
giorgos2405 0:07f0cd3758fa 2 #include "DS2480B.h"
giorgos2405 0:07f0cd3758fa 3
giorgos2405 0:07f0cd3758fa 4 #define Reset 0xC1
giorgos2405 0:07f0cd3758fa 5 #define Pullup 0x3B
giorgos2405 0:07f0cd3758fa 6 #define DataMode 0xE1
giorgos2405 0:07f0cd3758fa 7 #define CommandMode 0xE3
giorgos2405 0:07f0cd3758fa 8 #define ConvertT 0x44
giorgos2405 0:07f0cd3758fa 9 #define PullupArm 0xEF
giorgos2405 0:07f0cd3758fa 10 #define PullupDisarm 0xED
giorgos2405 0:07f0cd3758fa 11 #define PulseTerminate 0xF1
giorgos2405 0:07f0cd3758fa 12 #define PullupDisarm 0xED
giorgos2405 0:07f0cd3758fa 13 #define ReadScratchpad 0xBE
giorgos2405 0:07f0cd3758fa 14 #define SkipROM 0xCC
giorgos2405 0:07f0cd3758fa 15 #define MatchROM 0x55
giorgos2405 0:07f0cd3758fa 16
giorgos2405 0:07f0cd3758fa 17 Serial serial(p9, p10);
giorgos2405 0:07f0cd3758fa 18
giorgos2405 0:07f0cd3758fa 19 int DS1920[8] = {0x10, 0x7A, 0xA8, 0x92, 0x02, 0x08, 0x00, 0x7E};
giorgos2405 0:07f0cd3758fa 20
giorgos2405 0:07f0cd3758fa 21 void DS2480B::mreset(void){
giorgos2405 0:07f0cd3758fa 22 serial.send_break();
giorgos2405 0:07f0cd3758fa 23 serial.putc(0xC1);
giorgos2405 0:07f0cd3758fa 24 }
giorgos2405 0:07f0cd3758fa 25
giorgos2405 0:07f0cd3758fa 26 int DS2480B::reset(void)
giorgos2405 0:07f0cd3758fa 27 {
giorgos2405 0:07f0cd3758fa 28 serial.putc(0xC1);
giorgos2405 0:07f0cd3758fa 29 result = serial.getc();
giorgos2405 0:07f0cd3758fa 30 // printf("reset = %X \n \r", result); DEBUGGING
giorgos2405 0:07f0cd3758fa 31
giorgos2405 0:07f0cd3758fa 32 if(result == 0xCD){
giorgos2405 0:07f0cd3758fa 33 return 1;
giorgos2405 0:07f0cd3758fa 34 }
giorgos2405 0:07f0cd3758fa 35 else{
giorgos2405 0:07f0cd3758fa 36 mreset();
giorgos2405 0:07f0cd3758fa 37 return 0;
giorgos2405 0:07f0cd3758fa 38 }
giorgos2405 0:07f0cd3758fa 39 }
giorgos2405 0:07f0cd3758fa 40
giorgos2405 0:07f0cd3758fa 41 //for commands that the ds2480b returns nothing over the UART
giorgos2405 0:07f0cd3758fa 42 void DS2480B::Mode(int command)
giorgos2405 0:07f0cd3758fa 43 {
giorgos2405 0:07f0cd3758fa 44 serial.putc(command);
giorgos2405 0:07f0cd3758fa 45 }
giorgos2405 0:07f0cd3758fa 46
giorgos2405 0:07f0cd3758fa 47 //for commands that the ds2480b returns a character over the UART
giorgos2405 0:07f0cd3758fa 48 int DS2480B::Command(int command)
giorgos2405 0:07f0cd3758fa 49 {
giorgos2405 0:07f0cd3758fa 50 serial.putc(command);
giorgos2405 0:07f0cd3758fa 51 result = serial.getc();
giorgos2405 0:07f0cd3758fa 52 // printf("sent = %X\t received = %X \n \r", command, result); DEBUGGING
giorgos2405 0:07f0cd3758fa 53
giorgos2405 0:07f0cd3758fa 54 return result;
giorgos2405 0:07f0cd3758fa 55 }
giorgos2405 0:07f0cd3758fa 56
giorgos2405 0:07f0cd3758fa 57
giorgos2405 0:07f0cd3758fa 58 //Search Accelerator algorithm
giorgos2405 0:07f0cd3758fa 59 void DS2480B::Search(int searchmode) //search ROM or Alarm Search command
giorgos2405 0:07f0cd3758fa 60 {
giorgos2405 0:07f0cd3758fa 61 hdb = 0; //reset highest discrepancy bit found
giorgos2405 0:07f0cd3758fa 62 last_hdb = 0; //last discrepancy bit
giorgos2405 0:07f0cd3758fa 63
giorgos2405 0:07f0cd3758fa 64 index = 0; //index of array for saving device's addresses
giorgos2405 0:07f0cd3758fa 65
giorgos2405 0:07f0cd3758fa 66
giorgos2405 0:07f0cd3758fa 67 //clear array where current devices are being stored
giorgos2405 0:07f0cd3758fa 68 int b = sizeof(romstorage)/ sizeof(uint64_t);
giorgos2405 0:07f0cd3758fa 69 for(int i=0; i<b; i++){
giorgos2405 0:07f0cd3758fa 70 romstorage[i] = 0;
giorgos2405 0:07f0cd3758fa 71 }
giorgos2405 0:07f0cd3758fa 72
giorgos2405 0:07f0cd3758fa 73
giorgos2405 0:07f0cd3758fa 74 //Reset pulse
giorgos2405 0:07f0cd3758fa 75 if(reset()){
giorgos2405 0:07f0cd3758fa 76
giorgos2405 0:07f0cd3758fa 77
giorgos2405 0:07f0cd3758fa 78 //set data mode
giorgos2405 0:07f0cd3758fa 79 Mode(0xE1);
giorgos2405 0:07f0cd3758fa 80
giorgos2405 0:07f0cd3758fa 81 //search rom/alert search
giorgos2405 0:07f0cd3758fa 82 Command(searchmode);
giorgos2405 0:07f0cd3758fa 83
giorgos2405 0:07f0cd3758fa 84 //set mode command
giorgos2405 0:07f0cd3758fa 85 Mode(0xE3);
giorgos2405 0:07f0cd3758fa 86
giorgos2405 0:07f0cd3758fa 87 //search accelerator on
giorgos2405 0:07f0cd3758fa 88 Mode(0xB1);
giorgos2405 0:07f0cd3758fa 89
giorgos2405 0:07f0cd3758fa 90 //set data mode
giorgos2405 0:07f0cd3758fa 91 Mode(0xE1);
giorgos2405 0:07f0cd3758fa 92
giorgos2405 0:07f0cd3758fa 93 //First search data
giorgos2405 0:07f0cd3758fa 94 for(int i=0; i<16; i++){
giorgos2405 0:07f0cd3758fa 95 serial.putc(0x00);
giorgos2405 0:07f0cd3758fa 96 }
giorgos2405 0:07f0cd3758fa 97
giorgos2405 0:07f0cd3758fa 98 //read found ROM code
giorgos2405 0:07f0cd3758fa 99 for(int i=0; i<16; i++){
giorgos2405 0:07f0cd3758fa 100 ROM[i] = serial.getc();
giorgos2405 0:07f0cd3758fa 101 }
giorgos2405 0:07f0cd3758fa 102
giorgos2405 0:07f0cd3758fa 103 //command mode
giorgos2405 0:07f0cd3758fa 104 Mode(0xE3);
giorgos2405 0:07f0cd3758fa 105
giorgos2405 0:07f0cd3758fa 106 //search accelerator off
giorgos2405 0:07f0cd3758fa 107 Mode(0xA1);
giorgos2405 0:07f0cd3758fa 108
giorgos2405 0:07f0cd3758fa 109 reset();
giorgos2405 0:07f0cd3758fa 110 getROM();
giorgos2405 0:07f0cd3758fa 111 }
giorgos2405 0:07f0cd3758fa 112
giorgos2405 0:07f0cd3758fa 113 while(1)
giorgos2405 0:07f0cd3758fa 114 {
giorgos2405 0:07f0cd3758fa 115 bool flag(false); //flag to break nested loops
giorgos2405 0:07f0cd3758fa 116 bool last(false); //flag signifying last device found
giorgos2405 0:07f0cd3758fa 117
giorgos2405 0:07f0cd3758fa 118 for(int i=15; i>-1; i--) //Run through obtained ROM bytes
giorgos2405 0:07f0cd3758fa 119 {
giorgos2405 0:07f0cd3758fa 120 last_hdb = hdb;
giorgos2405 0:07f0cd3758fa 121
giorgos2405 0:07f0cd3758fa 122 mask = 0x40; // mask for bits detection
giorgos2405 0:07f0cd3758fa 123
giorgos2405 0:07f0cd3758fa 124 //run discrepancy bits ( 1st, 3rd, 5th, 7th in byte)
giorgos2405 0:07f0cd3758fa 125 for(int j=7; j>0; j=j-2)
giorgos2405 0:07f0cd3758fa 126 {
giorgos2405 0:07f0cd3758fa 127 if((mask & ROM[i]) != 0) //check for discrepancy
giorgos2405 0:07f0cd3758fa 128 {
giorgos2405 0:07f0cd3758fa 129 mask = mask << 1; // move from discrepancy to pattern bits
giorgos2405 0:07f0cd3758fa 130 ROM[i] = (ROM[i] | mask); //set pattern
giorgos2405 0:07f0cd3758fa 131 mask = 0xFF >> (7-j);
giorgos2405 0:07f0cd3758fa 132 ROM[i] = ROM[i] & mask;
giorgos2405 0:07f0cd3758fa 133
giorgos2405 0:07f0cd3758fa 134 hdb = (((i) * j)+j);
giorgos2405 0:07f0cd3758fa 135 if(hdb == last_hdb){
giorgos2405 0:07f0cd3758fa 136 flag = true;
giorgos2405 0:07f0cd3758fa 137 last = true;
giorgos2405 0:07f0cd3758fa 138 break;
giorgos2405 0:07f0cd3758fa 139 }
giorgos2405 0:07f0cd3758fa 140
giorgos2405 0:07f0cd3758fa 141 // DEBUGGING printf("discrepancy flag at byte %d, bit %d\n\r", i, j);
giorgos2405 0:07f0cd3758fa 142
giorgos2405 0:07f0cd3758fa 143 int dbyte = i;
giorgos2405 0:07f0cd3758fa 144 for(int k=dbyte+1; i<16; i++){
giorgos2405 0:07f0cd3758fa 145 ROM[k] = 0;
giorgos2405 0:07f0cd3758fa 146 }
giorgos2405 0:07f0cd3758fa 147
giorgos2405 0:07f0cd3758fa 148 flag = true;
giorgos2405 0:07f0cd3758fa 149 break;
giorgos2405 0:07f0cd3758fa 150 }
giorgos2405 0:07f0cd3758fa 151 if(flag == true)
giorgos2405 0:07f0cd3758fa 152 {
giorgos2405 0:07f0cd3758fa 153 break;
giorgos2405 0:07f0cd3758fa 154 }
giorgos2405 0:07f0cd3758fa 155 mask = mask >> 2;
giorgos2405 0:07f0cd3758fa 156 }
giorgos2405 0:07f0cd3758fa 157
giorgos2405 0:07f0cd3758fa 158 if(flag == true)
giorgos2405 0:07f0cd3758fa 159 {
giorgos2405 0:07f0cd3758fa 160 break;
giorgos2405 0:07f0cd3758fa 161 }
giorgos2405 0:07f0cd3758fa 162 }
giorgos2405 0:07f0cd3758fa 163
giorgos2405 0:07f0cd3758fa 164 if(flag == false)
giorgos2405 0:07f0cd3758fa 165 {
giorgos2405 0:07f0cd3758fa 166 break;
giorgos2405 0:07f0cd3758fa 167 }
giorgos2405 0:07f0cd3758fa 168
giorgos2405 0:07f0cd3758fa 169 if (last == true)
giorgos2405 0:07f0cd3758fa 170 {
giorgos2405 0:07f0cd3758fa 171 break;
giorgos2405 0:07f0cd3758fa 172 }
giorgos2405 0:07f0cd3758fa 173
giorgos2405 0:07f0cd3758fa 174 //Reset pulse
giorgos2405 0:07f0cd3758fa 175 if(reset()){
giorgos2405 0:07f0cd3758fa 176
giorgos2405 0:07f0cd3758fa 177 //set data mode
giorgos2405 0:07f0cd3758fa 178 Mode(0xE1);
giorgos2405 0:07f0cd3758fa 179
giorgos2405 0:07f0cd3758fa 180 //search rom
giorgos2405 0:07f0cd3758fa 181 Command(0xF0);
giorgos2405 0:07f0cd3758fa 182
giorgos2405 0:07f0cd3758fa 183 //set mode command
giorgos2405 0:07f0cd3758fa 184 Mode(0xE3);
giorgos2405 0:07f0cd3758fa 185
giorgos2405 0:07f0cd3758fa 186 //search accelerator on
giorgos2405 0:07f0cd3758fa 187 Mode(0xB1);
giorgos2405 0:07f0cd3758fa 188
giorgos2405 0:07f0cd3758fa 189 //set data mode
giorgos2405 0:07f0cd3758fa 190 Mode(0xE1);
giorgos2405 0:07f0cd3758fa 191
giorgos2405 0:07f0cd3758fa 192 // insert previous rom code with search path set
giorgos2405 0:07f0cd3758fa 193 for(int i=0; i<16; i++){
giorgos2405 0:07f0cd3758fa 194 serial.putc(ROM[i]);
giorgos2405 0:07f0cd3758fa 195 }
giorgos2405 0:07f0cd3758fa 196
giorgos2405 0:07f0cd3758fa 197 for(int i=0; i<16; i++){
giorgos2405 0:07f0cd3758fa 198 ROM[i] = serial.getc();
giorgos2405 0:07f0cd3758fa 199 // printf("rom %X \t", ROM[i]); Debugging
giorgos2405 0:07f0cd3758fa 200 }
giorgos2405 0:07f0cd3758fa 201
giorgos2405 0:07f0cd3758fa 202 //command mode
giorgos2405 0:07f0cd3758fa 203 Mode(0xE3);
giorgos2405 0:07f0cd3758fa 204
giorgos2405 0:07f0cd3758fa 205 //search accelerator off
giorgos2405 0:07f0cd3758fa 206 Mode(0xA1);
giorgos2405 0:07f0cd3758fa 207
giorgos2405 0:07f0cd3758fa 208 //Reset
giorgos2405 0:07f0cd3758fa 209 reset();
giorgos2405 0:07f0cd3758fa 210 getROM();
giorgos2405 0:07f0cd3758fa 211 }
giorgos2405 0:07f0cd3758fa 212 }
giorgos2405 0:07f0cd3758fa 213 }
giorgos2405 0:07f0cd3758fa 214
giorgos2405 0:07f0cd3758fa 215 // code to compile the bytes of the rom address and determine the type of device connected
giorgos2405 0:07f0cd3758fa 216 void DS2480B::getROM(void)
giorgos2405 0:07f0cd3758fa 217 {
giorgos2405 0:07f0cd3758fa 218 rom = 0;
giorgos2405 0:07f0cd3758fa 219 for(int i=14; i>-1; i=i-2){
giorgos2405 0:07f0cd3758fa 220 byte = 0; //variable to store the byte value
giorgos2405 0:07f0cd3758fa 221 mask = 2;
giorgos2405 0:07f0cd3758fa 222
giorgos2405 0:07f0cd3758fa 223 //use the mask to get the LS nibble
giorgos2405 0:07f0cd3758fa 224 for(int j=1; j<5; j=j++){
giorgos2405 0:07f0cd3758fa 225 temp = mask & ROM[i];
giorgos2405 0:07f0cd3758fa 226 temp = temp >> j;
giorgos2405 0:07f0cd3758fa 227 byte = byte + temp;
giorgos2405 0:07f0cd3758fa 228 mask = mask << 2;
giorgos2405 0:07f0cd3758fa 229 }
giorgos2405 0:07f0cd3758fa 230
giorgos2405 0:07f0cd3758fa 231 mask = 2;
giorgos2405 0:07f0cd3758fa 232
giorgos2405 0:07f0cd3758fa 233 //use the mask to get the MS nibble
giorgos2405 0:07f0cd3758fa 234 for(int j=3; j>-1; j=j--){
giorgos2405 0:07f0cd3758fa 235 temp = mask & ROM[i+1];
giorgos2405 0:07f0cd3758fa 236 temp = temp << j;
giorgos2405 0:07f0cd3758fa 237 byte = byte + temp;
giorgos2405 0:07f0cd3758fa 238 mask = mask << 2;
giorgos2405 0:07f0cd3758fa 239 }
giorgos2405 0:07f0cd3758fa 240
giorgos2405 0:07f0cd3758fa 241 rom = ((rom >> i * 4) + byte) << i * 4;
giorgos2405 0:07f0cd3758fa 242
giorgos2405 0:07f0cd3758fa 243 // printf("byte = %X \t", byte); DEBUGGING
giorgos2405 0:07f0cd3758fa 244
giorgos2405 0:07f0cd3758fa 245
giorgos2405 0:07f0cd3758fa 246 romstorage[index] = rom;
giorgos2405 0:07f0cd3758fa 247
giorgos2405 0:07f0cd3758fa 248 // printf("rom address = %llX\n", romstorage[index]); DEBUGGING
giorgos2405 0:07f0cd3758fa 249 index++;
giorgos2405 0:07f0cd3758fa 250 }
giorgos2405 0:07f0cd3758fa 251 }
giorgos2405 0:07f0cd3758fa 252
giorgos2405 0:07f0cd3758fa 253 //**************************************************DS1920*******************************************\\
giorgos2405 0:07f0cd3758fa 254
giorgos2405 0:07f0cd3758fa 255 float DS2480B::AcquireTemp(uint64_t address){
giorgos2405 0:07f0cd3758fa 256 if(reset()){
giorgos2405 0:07f0cd3758fa 257 //set data mode
giorgos2405 0:07f0cd3758fa 258 Mode(DataMode);
giorgos2405 0:07f0cd3758fa 259
giorgos2405 0:07f0cd3758fa 260 //MatchRom
giorgos2405 0:07f0cd3758fa 261 Command(MatchROM);
giorgos2405 0:07f0cd3758fa 262
giorgos2405 0:07f0cd3758fa 263 for(int i=0; i<8; i++){
giorgos2405 0:07f0cd3758fa 264 //use mask to send rom byte-by-byte lsb first.
giorgos2405 0:07f0cd3758fa 265 Command((address >> (i*8)) & 0xFF);
giorgos2405 0:07f0cd3758fa 266 }
giorgos2405 0:07f0cd3758fa 267
giorgos2405 0:07f0cd3758fa 268
giorgos2405 0:07f0cd3758fa 269 //Read scratchpad
giorgos2405 0:07f0cd3758fa 270 Command(ReadScratchpad);
giorgos2405 0:07f0cd3758fa 271
giorgos2405 0:07f0cd3758fa 272 for(int i=0; i<9; i++){
giorgos2405 0:07f0cd3758fa 273 serial.putc(0xFF);
giorgos2405 0:07f0cd3758fa 274 scratchpad[i] = serial.getc();
giorgos2405 0:07f0cd3758fa 275 }
giorgos2405 0:07f0cd3758fa 276
giorgos2405 0:07f0cd3758fa 277 temperature = scratchpad[0]/2;
giorgos2405 0:07f0cd3758fa 278
giorgos2405 0:07f0cd3758fa 279 if(scratchpad[1] == 0xFF)
giorgos2405 0:07f0cd3758fa 280 {
giorgos2405 0:07f0cd3758fa 281 temperature = temperature * -1;
giorgos2405 0:07f0cd3758fa 282 }
giorgos2405 0:07f0cd3758fa 283
giorgos2405 0:07f0cd3758fa 284 // printf("temperature = %f \n", temperature); DEBUGGING
giorgos2405 0:07f0cd3758fa 285
giorgos2405 0:07f0cd3758fa 286 //set mode command
giorgos2405 0:07f0cd3758fa 287 Mode(CommandMode);
giorgos2405 0:07f0cd3758fa 288 reset();
giorgos2405 0:07f0cd3758fa 289 }
giorgos2405 0:07f0cd3758fa 290 return temperature;
giorgos2405 0:07f0cd3758fa 291 }
giorgos2405 0:07f0cd3758fa 292
giorgos2405 0:07f0cd3758fa 293 void DS2480B::ConvertTemp(void){
giorgos2405 0:07f0cd3758fa 294 //set strong pullup duration
giorgos2405 0:07f0cd3758fa 295 Command(Pullup);
giorgos2405 0:07f0cd3758fa 296
giorgos2405 0:07f0cd3758fa 297 //Reset pulse
giorgos2405 0:07f0cd3758fa 298 if(reset()){
giorgos2405 0:07f0cd3758fa 299
giorgos2405 0:07f0cd3758fa 300 //set data mode
giorgos2405 0:07f0cd3758fa 301 Mode(DataMode);
giorgos2405 0:07f0cd3758fa 302
giorgos2405 0:07f0cd3758fa 303 //skip rom
giorgos2405 0:07f0cd3758fa 304 Command(SkipROM);
giorgos2405 0:07f0cd3758fa 305
giorgos2405 0:07f0cd3758fa 306 //set mode command
giorgos2405 0:07f0cd3758fa 307 Mode(CommandMode);
giorgos2405 0:07f0cd3758fa 308
giorgos2405 0:07f0cd3758fa 309 //arm strong pullup
giorgos2405 0:07f0cd3758fa 310 Mode(PullupArm);
giorgos2405 0:07f0cd3758fa 311
giorgos2405 0:07f0cd3758fa 312 //terminate pulse
giorgos2405 0:07f0cd3758fa 313 Command(PulseTerminate);
giorgos2405 0:07f0cd3758fa 314
giorgos2405 0:07f0cd3758fa 315 //set data mode
giorgos2405 0:07f0cd3758fa 316 Mode(DataMode);
giorgos2405 0:07f0cd3758fa 317
giorgos2405 0:07f0cd3758fa 318 //convert Temp
giorgos2405 0:07f0cd3758fa 319 Command(ConvertT);
giorgos2405 0:07f0cd3758fa 320
giorgos2405 0:07f0cd3758fa 321 serial.getc();
giorgos2405 0:07f0cd3758fa 322
giorgos2405 0:07f0cd3758fa 323 //set mode command
giorgos2405 0:07f0cd3758fa 324 Mode(CommandMode);
giorgos2405 0:07f0cd3758fa 325
giorgos2405 0:07f0cd3758fa 326 //disarm strong pullup
giorgos2405 0:07f0cd3758fa 327 Mode(PullupDisarm);
giorgos2405 0:07f0cd3758fa 328
giorgos2405 0:07f0cd3758fa 329 //terminate pulse
giorgos2405 0:07f0cd3758fa 330 Command(PulseTerminate); // to clear rx buffer of lpc1768
giorgos2405 0:07f0cd3758fa 331 reset();
giorgos2405 0:07f0cd3758fa 332 }
giorgos2405 0:07f0cd3758fa 333 }
giorgos2405 0:07f0cd3758fa 334
giorgos2405 0:07f0cd3758fa 335 int DS2480B::Checkdevices(void){
giorgos2405 0:07f0cd3758fa 336 int devices; // determine number of devices connected to the master
giorgos2405 0:07f0cd3758fa 337 int type;
giorgos2405 0:07f0cd3758fa 338 ds1920no = 0; //number of temperature sensors
giorgos2405 0:07f0cd3758fa 339 ds1920first = 0;//position of 1st ds1920 in array
giorgos2405 0:07f0cd3758fa 340 ds1990no = 0; //number of ID tags
giorgos2405 0:07f0cd3758fa 341 ds1990first = 0; //position of 1st ds1990 in array
giorgos2405 0:07f0cd3758fa 342 for(int i=0; i<2000; i++){
giorgos2405 0:07f0cd3758fa 343 devices = devices++;
giorgos2405 0:07f0cd3758fa 344 type = romstorage[i] & 0xFF; //check family byte
giorgos2405 0:07f0cd3758fa 345
giorgos2405 0:07f0cd3758fa 346 //count ds1920 devices
giorgos2405 0:07f0cd3758fa 347 if(type == 0x10){
giorgos2405 0:07f0cd3758fa 348 if(ds1920no == 0){
giorgos2405 0:07f0cd3758fa 349 ds1920first = i;
giorgos2405 0:07f0cd3758fa 350 }
giorgos2405 0:07f0cd3758fa 351 ds1920no = ds1920no + 1;
giorgos2405 0:07f0cd3758fa 352 }
giorgos2405 0:07f0cd3758fa 353
giorgos2405 0:07f0cd3758fa 354 if(type == 0x01){
giorgos2405 0:07f0cd3758fa 355 if(ds1990no == 0){
giorgos2405 0:07f0cd3758fa 356 ds1990first = i;
giorgos2405 0:07f0cd3758fa 357 }
giorgos2405 0:07f0cd3758fa 358 ds1920no = ds1920no + 1;
giorgos2405 0:07f0cd3758fa 359 }
giorgos2405 0:07f0cd3758fa 360 }
giorgos2405 0:07f0cd3758fa 361 return devices;
giorgos2405 0:07f0cd3758fa 362 }