University of Glasgow MSc Project 1-Wire Master interfacing with temperature and serial number iButtons and transmitting the measurements to a UDP socket

Dependencies:   DS2480B EthernetInterface mbed-rtos mbed

Committer:
giorgos2405
Date:
Mon Aug 29 14:22:33 2016 +0000
Revision:
0:e0f44f70662e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giorgos2405 0:e0f44f70662e 1 #include "mbed.h"
giorgos2405 0:e0f44f70662e 2 #include "EthernetInterface.h"
giorgos2405 0:e0f44f70662e 3 #include "DS2480B.h"
giorgos2405 0:e0f44f70662e 4
giorgos2405 0:e0f44f70662e 5 #define PORT 5001
giorgos2405 0:e0f44f70662e 6
giorgos2405 0:e0f44f70662e 7 #define searchROM 0xF0
giorgos2405 0:e0f44f70662e 8 #define alarmsearch 0xEC
giorgos2405 0:e0f44f70662e 9
giorgos2405 0:e0f44f70662e 10 #define ID 0x91000012E145EC01
giorgos2405 0:e0f44f70662e 11
giorgos2405 0:e0f44f70662e 12 DigitalOut toggle(p8);
giorgos2405 0:e0f44f70662e 13 DS2480B ds2480b;
giorgos2405 0:e0f44f70662e 14
giorgos2405 0:e0f44f70662e 15
giorgos2405 0:e0f44f70662e 16 Ticker flash;
giorgos2405 0:e0f44f70662e 17
giorgos2405 0:e0f44f70662e 18 int main (void) {
giorgos2405 0:e0f44f70662e 19
giorgos2405 0:e0f44f70662e 20 ds2480b.Search(searchROM);
giorgos2405 0:e0f44f70662e 21
giorgos2405 0:e0f44f70662e 22 EthernetInterface eth;
giorgos2405 0:e0f44f70662e 23 eth.init(); //Use DHCP
giorgos2405 0:e0f44f70662e 24 eth.connect();
giorgos2405 0:e0f44f70662e 25 printf("\nServer IP Address is %s\n", eth.getIPAddress());
giorgos2405 0:e0f44f70662e 26
giorgos2405 0:e0f44f70662e 27 UDPSocket server;
giorgos2405 0:e0f44f70662e 28 server.init();
giorgos2405 0:e0f44f70662e 29 server.set_broadcasting();
giorgos2405 0:e0f44f70662e 30
giorgos2405 0:e0f44f70662e 31 Endpoint client;
giorgos2405 0:e0f44f70662e 32 client.set_address("255.255.255.255", PORT);
giorgos2405 0:e0f44f70662e 33
giorgos2405 0:e0f44f70662e 34 char str[256];
giorgos2405 0:e0f44f70662e 35 printf("Sending Packet back to Client\n");
giorgos2405 0:e0f44f70662e 36
giorgos2405 0:e0f44f70662e 37 while (true) {
giorgos2405 0:e0f44f70662e 38
giorgos2405 0:e0f44f70662e 39 ds2480b.Search(alarmsearch);
giorgos2405 0:e0f44f70662e 40 int devices = ds2480b.Checkdevices();
giorgos2405 0:e0f44f70662e 41 ds2480b.ConvertTemp();
giorgos2405 0:e0f44f70662e 42
giorgos2405 0:e0f44f70662e 43 for(int i=ds2480b.ds1920first; i<ds2480b.ds1920no; i++){
giorgos2405 0:e0f44f70662e 44 float temperature = ds2480b.AcquireTemp(ds2480b.romstorage[i]);
giorgos2405 0:e0f44f70662e 45 sprintf(str, "%llX %f END", ds2480b.romstorage[i], ds2480b.temperature);
giorgos2405 0:e0f44f70662e 46 printf("%s", str);
giorgos2405 0:e0f44f70662e 47 server.sendTo(client, str, 256);
giorgos2405 0:e0f44f70662e 48 }
giorgos2405 0:e0f44f70662e 49
giorgos2405 0:e0f44f70662e 50 ds2480b.Search(searchROM);
giorgos2405 0:e0f44f70662e 51 int devices = ds2480b.Checkdevices();
giorgos2405 0:e0f44f70662e 52
giorgos2405 0:e0f44f70662e 53 ds2480b.ConvertTemp();
giorgos2405 0:e0f44f70662e 54
giorgos2405 0:e0f44f70662e 55 for(int i=ds2480b.ds1990first; i<ds2480b.ds1990no; i++){
giorgos2405 0:e0f44f70662e 56 if(ID == romstorage[i]){
giorgos2405 0:e0f44f70662e 57 for(int i=ds2480b.ds1920first; i<ds2480b.ds1920no; i++){
giorgos2405 0:e0f44f70662e 58 float temperature = ds2480b.AcquireTemp(ds2480b.romstorage[i]);
giorgos2405 0:e0f44f70662e 59
giorgos2405 0:e0f44f70662e 60 //send the temperature measurements
giorgos2405 0:e0f44f70662e 61
giorgos2405 0:e0f44f70662e 62 sprintf(str, "%llX %f END", ds2480b.romstorage[i], ds2480b.temperature);
giorgos2405 0:e0f44f70662e 63 printf("%s", str);
giorgos2405 0:e0f44f70662e 64 server.sendTo(client, str, 256);
giorgos2405 0:e0f44f70662e 65 }
giorgos2405 0:e0f44f70662e 66 }
giorgos2405 0:e0f44f70662e 67 }
giorgos2405 0:e0f44f70662e 68 }