1
OneWire_Functions.h@0:3e574710804f, 2017-11-27 (annotated)
- Committer:
- ChesterLin
- Date:
- Mon Nov 27 06:05:15 2017 +0000
- Revision:
- 0:3e574710804f
1-WIRE LIBRARY
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ChesterLin | 0:3e574710804f | 1 | #ifndef OneWire_Functions |
ChesterLin | 0:3e574710804f | 2 | #define OneWire_Functions |
ChesterLin | 0:3e574710804f | 3 | |
ChesterLin | 0:3e574710804f | 4 | #include "mbed.h" |
ChesterLin | 0:3e574710804f | 5 | #include "EthernetInterface.h" |
ChesterLin | 0:3e574710804f | 6 | #include "NTPClient.h" |
ChesterLin | 0:3e574710804f | 7 | #include "SimpleSMTPClient.h" |
ChesterLin | 0:3e574710804f | 8 | |
ChesterLin | 0:3e574710804f | 9 | #define DOMAIN "DOMAIN.net" |
ChesterLin | 0:3e574710804f | 10 | #define SERVER "smtp-mail.outlook.com" |
ChesterLin | 0:3e574710804f | 11 | #define PORT "587" |
ChesterLin | 0:3e574710804f | 12 | #define USER "hotmanson@outlook.com" |
ChesterLin | 0:3e574710804f | 13 | #define PWD "chester1551" |
ChesterLin | 0:3e574710804f | 14 | #define FROM_ADDRESS "hotmanson@outlook.com" |
ChesterLin | 0:3e574710804f | 15 | #define TO_ADDRESS "hotmanson@outlook.com" |
ChesterLin | 0:3e574710804f | 16 | #define SUBJECT "Cluster is Buring!" |
ChesterLin | 0:3e574710804f | 17 | |
ChesterLin | 0:3e574710804f | 18 | #define OneWireDevNu 5 |
ChesterLin | 0:3e574710804f | 19 | #define OneWireTempReg OneWireDevNu*2 |
ChesterLin | 0:3e574710804f | 20 | |
ChesterLin | 0:3e574710804f | 21 | #define Ninebitresolution 0x1f |
ChesterLin | 0:3e574710804f | 22 | #define Tenbitresolution 0x3f |
ChesterLin | 0:3e574710804f | 23 | #define Elevenbitresolution 0x5f |
ChesterLin | 0:3e574710804f | 24 | #define Twebitresolution 0x7f |
ChesterLin | 0:3e574710804f | 25 | |
ChesterLin | 0:3e574710804f | 26 | #define FALSE 0 |
ChesterLin | 0:3e574710804f | 27 | #define TRUE 1 |
ChesterLin | 0:3e574710804f | 28 | |
ChesterLin | 0:3e574710804f | 29 | class OneWire |
ChesterLin | 0:3e574710804f | 30 | { |
ChesterLin | 0:3e574710804f | 31 | public: |
ChesterLin | 0:3e574710804f | 32 | OneWire (PinName wire); //define 1-wire I/O pin |
ChesterLin | 0:3e574710804f | 33 | |
ChesterLin | 0:3e574710804f | 34 | //DS1822 Quick Commands |
ChesterLin | 0:3e574710804f | 35 | //search the alarm on the bus. if ture, send email. |
ChesterLin | 0:3e574710804f | 36 | int Read_alarm_Email(); |
ChesterLin | 0:3e574710804f | 37 | //read all temp on the bus |
ChesterLin | 0:3e574710804f | 38 | int Read_Temp_On_bus(); |
ChesterLin | 0:3e574710804f | 39 | //set resolution or alarm temp to all device |
ChesterLin | 0:3e574710804f | 40 | void Change_Res(); |
ChesterLin | 0:3e574710804f | 41 | //all temperture data |
ChesterLin | 0:3e574710804f | 42 | char alltemp[OneWireTempReg]; |
ChesterLin | 0:3e574710804f | 43 | //set resolution and alarm trigger temperature |
ChesterLin | 0:3e574710804f | 44 | char sca[3]; |
ChesterLin | 0:3e574710804f | 45 | |
ChesterLin | 0:3e574710804f | 46 | private: |
ChesterLin | 0:3e574710804f | 47 | |
ChesterLin | 0:3e574710804f | 48 | //static OneWire* uniqueInstance; |
ChesterLin | 0:3e574710804f | 49 | DigitalInOut _pin; |
ChesterLin | 0:3e574710804f | 50 | |
ChesterLin | 0:3e574710804f | 51 | |
ChesterLin | 0:3e574710804f | 52 | //One Wire Basic Communication Protocol |
ChesterLin | 0:3e574710804f | 53 | //base functions |
ChesterLin | 0:3e574710804f | 54 | int init(); |
ChesterLin | 0:3e574710804f | 55 | void write_bit(uint8_t data); |
ChesterLin | 0:3e574710804f | 56 | int read_bit(); |
ChesterLin | 0:3e574710804f | 57 | |
ChesterLin | 0:3e574710804f | 58 | //Advance Communication Protocol |
ChesterLin | 0:3e574710804f | 59 | void write_byte(uint8_t data); |
ChesterLin | 0:3e574710804f | 60 | int read_byte(); |
ChesterLin | 0:3e574710804f | 61 | |
ChesterLin | 0:3e574710804f | 62 | //DS1822 Function |
ChesterLin | 0:3e574710804f | 63 | //char* init_Match_Read_Scratchpad(char addr[8]); |
ChesterLin | 0:3e574710804f | 64 | char* init_Match_Get_Temp(char addr[8]); |
ChesterLin | 0:3e574710804f | 65 | void init_Match_Write_Scratchpad(char addr[8], char Scratchpad[1]); |
ChesterLin | 0:3e574710804f | 66 | //all device on the bus convert t |
ChesterLin | 0:3e574710804f | 67 | int Skip_Convert_T(); |
ChesterLin | 0:3e574710804f | 68 | |
ChesterLin | 0:3e574710804f | 69 | //One Wire Search Algorithm |
ChesterLin | 0:3e574710804f | 70 | // method declarations |
ChesterLin | 0:3e574710804f | 71 | int OWFirst(); |
ChesterLin | 0:3e574710804f | 72 | int OWNext(); |
ChesterLin | 0:3e574710804f | 73 | int OWVerify(); |
ChesterLin | 0:3e574710804f | 74 | void OWTargetSetup(unsigned char family_code); |
ChesterLin | 0:3e574710804f | 75 | void OWFamilySkipSetup(); |
ChesterLin | 0:3e574710804f | 76 | int OWSearch(); |
ChesterLin | 0:3e574710804f | 77 | unsigned char docrc8(unsigned char value); |
ChesterLin | 0:3e574710804f | 78 | int OWSearch_alarm(); |
ChesterLin | 0:3e574710804f | 79 | |
ChesterLin | 0:3e574710804f | 80 | //Search Result |
ChesterLin | 0:3e574710804f | 81 | char ROM_NO[8]; |
ChesterLin | 0:3e574710804f | 82 | int LastDiscrepancy; |
ChesterLin | 0:3e574710804f | 83 | int LastFamilyDiscrepancy; |
ChesterLin | 0:3e574710804f | 84 | int LastDeviceFlag; |
ChesterLin | 0:3e574710804f | 85 | unsigned char crc8; |
ChesterLin | 0:3e574710804f | 86 | |
ChesterLin | 0:3e574710804f | 87 | //resulotion |
ChesterLin | 0:3e574710804f | 88 | uint8_t reso; |
ChesterLin | 0:3e574710804f | 89 | //For Email Client |
ChesterLin | 0:3e574710804f | 90 | NTPClient ntp; |
ChesterLin | 0:3e574710804f | 91 | SimpleSMTPClient smtp; |
ChesterLin | 0:3e574710804f | 92 | |
ChesterLin | 0:3e574710804f | 93 | //Unused Function |
ChesterLin | 0:3e574710804f | 94 | //char* init_Read_ROM(); |
ChesterLin | 0:3e574710804f | 95 | //char* init_Skip_Get_Temp(); |
ChesterLin | 0:3e574710804f | 96 | //int init_Skip_Read_Scratchpad(); |
ChesterLin | 0:3e574710804f | 97 | //void init_Skip_Write_Scratchpad(char Scratchpad[7]); |
ChesterLin | 0:3e574710804f | 98 | |
ChesterLin | 0:3e574710804f | 99 | //One Wire ROM function |
ChesterLin | 0:3e574710804f | 100 | //int Read_ROM(); |
ChesterLin | 0:3e574710804f | 101 | //void Match_ROM(char addr[8]); |
ChesterLin | 0:3e574710804f | 102 | //void Skip_ROM(); |
ChesterLin | 0:3e574710804f | 103 | |
ChesterLin | 0:3e574710804f | 104 | //DS1822 Function |
ChesterLin | 0:3e574710804f | 105 | //int Convert_T(); |
ChesterLin | 0:3e574710804f | 106 | //int Read_Scratchpad(); |
ChesterLin | 0:3e574710804f | 107 | //void Write_Scratchpad(char Scratchpad[7]); |
ChesterLin | 0:3e574710804f | 108 | |
ChesterLin | 0:3e574710804f | 109 | // definitions |
ChesterLin | 0:3e574710804f | 110 | |
ChesterLin | 0:3e574710804f | 111 | |
ChesterLin | 0:3e574710804f | 112 | }; |
ChesterLin | 0:3e574710804f | 113 | |
ChesterLin | 0:3e574710804f | 114 | #endif |