Hallo und guten Morgen, kann mir bitte jemand den Kopf von der Angehängten Funktion erklären. Was bedeutet die leere define mit idata? Was macht das für einen Sinn? Danke Schönes Wochenende!
1 | #define uchar unsigned char
|
2 | #define uint unsigned int
|
3 | #define bit uchar
|
4 | #define idata
|
5 | #define code
|
6 | |
7 | |
8 | uchar w1_rom_search( uchar diff, uchar idata *id ) |
9 | {
|
10 | uchar i, j, next_diff; |
11 | bit b; |
12 | |
13 | if( w1_reset() ) |
14 | return PRESENCE_ERR; // error, no device found |
15 | w1_byte_wr( SEARCH_ROM ); // ROM search command |
16 | next_diff = LAST_DEVICE; // unchanged on last device |
17 | i = 8 * 8; // 8 bytes |
18 | do{ |
19 | j = 8; // 8 bits |
20 | do{ |
21 | b = w1_bit_io( 1 ); // read bit |
22 | if( w1_bit_io( 1 ) ){ // read complement bit |
23 | if( b ) // 11 |
24 | return DATA_ERR; // data error |
25 | }else{ |
26 | if( !b ){ // 00 = 2 devices |
27 | if( diff > i || |
28 | ((*id & 1) && diff != i) ){ |
29 | b = 1; // now 1 |
30 | next_diff = i; // next pass 0 |
31 | }
|
32 | }
|
33 | }
|
34 | w1_bit_io( b ); // write bit |
35 | *id >>= 1; |
36 | if( b ) // store bit |
37 | *id |= 0x80; |
38 | i--; |
39 | }while( --j ); |
40 | id++; // next byte |
41 | }while( i ); |
42 | return next_diff; // to continue search |
43 | }
|