ethernet mac address from serial number for DDKARM
mac_address.cpp@0:585e14a50a5b, 2012-09-03 (annotated)
- Committer:
- okini3939
- Date:
- Mon Sep 03 09:00:05 2012 +0000
- Revision:
- 0:585e14a50a5b
1st build
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:585e14a50a5b | 1 | #include "mbed.h" |
okini3939 | 0:585e14a50a5b | 2 | |
okini3939 | 0:585e14a50a5b | 3 | #define IAP_LOCATION 0x1fff1ff1 |
okini3939 | 0:585e14a50a5b | 4 | typedef void (*IAP_call)(unsigned int [], unsigned int []); |
okini3939 | 0:585e14a50a5b | 5 | |
okini3939 | 0:585e14a50a5b | 6 | IAP_call iap_entry = reinterpret_cast<IAP_call>(IAP_LOCATION); |
okini3939 | 0:585e14a50a5b | 7 | unsigned int IAP_command[ 5 ]; |
okini3939 | 0:585e14a50a5b | 8 | unsigned int IAP_result[ 5 ]; |
okini3939 | 0:585e14a50a5b | 9 | |
okini3939 | 0:585e14a50a5b | 10 | int IAP_read_serial( void ) { |
okini3939 | 0:585e14a50a5b | 11 | |
okini3939 | 0:585e14a50a5b | 12 | IAP_command[ 0 ] = 58; // IAPCommand_Read_device_serial_number |
okini3939 | 0:585e14a50a5b | 13 | |
okini3939 | 0:585e14a50a5b | 14 | iap_entry( IAP_command, IAP_result ); |
okini3939 | 0:585e14a50a5b | 15 | |
okini3939 | 0:585e14a50a5b | 16 | // return ( (int)IAP_result[ 0 ] ); |
okini3939 | 0:585e14a50a5b | 17 | return ( (int)IAP_result[ 1 ] ); // to return the number itself (this command always returns CMD_SUCCESS) |
okini3939 | 0:585e14a50a5b | 18 | } |
okini3939 | 0:585e14a50a5b | 19 | |
okini3939 | 0:585e14a50a5b | 20 | extern "C" void mbed_mac_address(char *s) { |
okini3939 | 0:585e14a50a5b | 21 | char mac[6] = {0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; |
okini3939 | 0:585e14a50a5b | 22 | int *serial = (int*)&mac[2]; |
okini3939 | 0:585e14a50a5b | 23 | |
okini3939 | 0:585e14a50a5b | 24 | *serial = IAP_read_serial(); |
okini3939 | 0:585e14a50a5b | 25 | memcpy(s, mac, 6); |
okini3939 | 0:585e14a50a5b | 26 | } |