1

Dependents:   final

Committer:
ChesterLin
Date:
Mon Nov 27 06:05:15 2017 +0000
Revision:
0:3e574710804f
1-WIRE LIBRARY

Who changed what in which revision?

UserRevisionLine numberNew 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