TEST ONLY!

Committer:
AjK
Date:
Wed Nov 17 19:39:33 2010 +0000
Revision:
0:a3d41f923207
TEST ONLY!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 0:a3d41f923207 1 /*
AjK 0:a3d41f923207 2 Copyright (c) 2010 Andy Kirkham
AjK 0:a3d41f923207 3
AjK 0:a3d41f923207 4 Permission is hereby granted, free of charge, to any person obtaining a copy
AjK 0:a3d41f923207 5 of this software and associated documentation files (the "Software"), to deal
AjK 0:a3d41f923207 6 in the Software without restriction, including without limitation the rights
AjK 0:a3d41f923207 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
AjK 0:a3d41f923207 8 copies of the Software, and to permit persons to whom the Software is
AjK 0:a3d41f923207 9 furnished to do so, subject to the following conditions:
AjK 0:a3d41f923207 10
AjK 0:a3d41f923207 11 The above copyright notice and this permission notice shall be included in
AjK 0:a3d41f923207 12 all copies or substantial portions of the Software.
AjK 0:a3d41f923207 13
AjK 0:a3d41f923207 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
AjK 0:a3d41f923207 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
AjK 0:a3d41f923207 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AjK 0:a3d41f923207 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
AjK 0:a3d41f923207 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
AjK 0:a3d41f923207 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
AjK 0:a3d41f923207 20 THE SOFTWARE.
AjK 0:a3d41f923207 21 */
AjK 0:a3d41f923207 22
AjK 0:a3d41f923207 23
AjK 0:a3d41f923207 24 #include "mbed.h"
AjK 0:a3d41f923207 25 #include "LLDP.h"
AjK 0:a3d41f923207 26
AjK 0:a3d41f923207 27 const char LLDPinfo1[] = "MBED";
AjK 0:a3d41f923207 28 const char LLDPinfo2[] = "A rapid prototyping system for the LPC17xx embedded microcontroller";
AjK 0:a3d41f923207 29 const char LLDPinfo3[] = "\x00\x80\x00\x80";
AjK 0:a3d41f923207 30
AjK 0:a3d41f923207 31 LLDP::LLDP() : Ethernet()
AjK 0:a3d41f923207 32 {
AjK 0:a3d41f923207 33 int totalLength = 0;
AjK 0:a3d41f923207 34 address(macAddress);
AjK 0:a3d41f923207 35
AjK 0:a3d41f923207 36 memset(buffer, 0xFF, sizeof(buffer));
AjK 0:a3d41f923207 37
AjK 0:a3d41f923207 38 // Default to 4:MACAddress
AjK 0:a3d41f923207 39 _chassis.setSubtype(4);
AjK 0:a3d41f923207 40 _chassis.setPayload(macAddress, 6);
AjK 0:a3d41f923207 41
AjK 0:a3d41f923207 42 // Default to 4:MACAddress
AjK 0:a3d41f923207 43 _port.setSubtype(3);
AjK 0:a3d41f923207 44 _port.setPayload(macAddress, 6);
AjK 0:a3d41f923207 45
AjK 0:a3d41f923207 46 //_mbed.setOUI(macAddress);
AjK 0:a3d41f923207 47 //_mbed.setSubtype(1);
AjK 0:a3d41f923207 48 //_mbed.setPayload((char *)LLDPinfo, strlen(LLDPinfo));
AjK 0:a3d41f923207 49 _systemName.base.header.setType(5);
AjK 0:a3d41f923207 50 _systemName.setPayload((char *)LLDPinfo1, strlen(LLDPinfo1));
AjK 0:a3d41f923207 51
AjK 0:a3d41f923207 52 _systemDesc.base.header.setType(6);
AjK 0:a3d41f923207 53 _systemDesc.setPayload((char *)LLDPinfo2, strlen(LLDPinfo2));
AjK 0:a3d41f923207 54
AjK 0:a3d41f923207 55 _systemCap.base.header.setType(7);
AjK 0:a3d41f923207 56 _systemCap.setPayload((char *)LLDPinfo3, 4);
AjK 0:a3d41f923207 57
AjK 0:a3d41f923207 58 totalLength += _chassis.copy(buffer + totalLength);
AjK 0:a3d41f923207 59 totalLength += _port.copy(buffer + totalLength);
AjK 0:a3d41f923207 60 totalLength += _ttl.copy(buffer + totalLength);
AjK 0:a3d41f923207 61 //totalLength += _mbed.copy(buffer + totalLength);
AjK 0:a3d41f923207 62 totalLength += _systemName.copy(buffer + totalLength);
AjK 0:a3d41f923207 63 totalLength += _systemDesc.copy(buffer + totalLength);
AjK 0:a3d41f923207 64 totalLength += _systemCap.copy(buffer + totalLength);
AjK 0:a3d41f923207 65 totalLength += _end.copy(buffer + totalLength);
AjK 0:a3d41f923207 66 buflen = totalLength;
AjK 0:a3d41f923207 67 }
AjK 0:a3d41f923207 68
AjK 0:a3d41f923207 69 void
AjK 0:a3d41f923207 70 LLDP::broadcast(void)
AjK 0:a3d41f923207 71 {
AjK 0:a3d41f923207 72 char e[6 + 6 + 2];
AjK 0:a3d41f923207 73
AjK 0:a3d41f923207 74 e[0] = 0x01; e[1] = 0x80; e[2] = 0xc2; e[3] = 0x00; e[4] = 0x00; e[5] = 0x0e;
AjK 0:a3d41f923207 75 e[6] = macAddress[0];
AjK 0:a3d41f923207 76 e[7] = macAddress[1];
AjK 0:a3d41f923207 77 e[8] = macAddress[2];
AjK 0:a3d41f923207 78 e[9] = macAddress[3];
AjK 0:a3d41f923207 79 e[10] = macAddress[4];
AjK 0:a3d41f923207 80 e[11] = macAddress[5];
AjK 0:a3d41f923207 81 e[12] = 0x88;
AjK 0:a3d41f923207 82 e[13] = 0xCC;
AjK 0:a3d41f923207 83
AjK 0:a3d41f923207 84 write(e, 6 + 6 + 2);
AjK 0:a3d41f923207 85 write(buffer, buflen);
AjK 0:a3d41f923207 86 send();
AjK 0:a3d41f923207 87 }