mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Jul 02 16:15:09 2015 +0100
Revision:
580:3c14cb9b87c5
Synchronized with git revision 213caf296f26963a7bea129b8ec4f33bbd1e6588

Full URL: https://github.com/mbedmicro/mbed/commit/213caf296f26963a7bea129b8ec4f33bbd1e6588/

commit of mps2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 580:3c14cb9b87c5 1 /* mbed Microcontroller Library
mbed_official 580:3c14cb9b87c5 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 580:3c14cb9b87c5 3 *
mbed_official 580:3c14cb9b87c5 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 580:3c14cb9b87c5 5 * you may not use this file except in compliance with the License.
mbed_official 580:3c14cb9b87c5 6 * You may obtain a copy of the License at
mbed_official 580:3c14cb9b87c5 7 *
mbed_official 580:3c14cb9b87c5 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 580:3c14cb9b87c5 9 *
mbed_official 580:3c14cb9b87c5 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 580:3c14cb9b87c5 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 580:3c14cb9b87c5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 580:3c14cb9b87c5 13 * See the License for the specific language governing permissions and
mbed_official 580:3c14cb9b87c5 14 * limitations under the License.
mbed_official 580:3c14cb9b87c5 15 */
mbed_official 580:3c14cb9b87c5 16 #include <string.h>
mbed_official 580:3c14cb9b87c5 17
mbed_official 580:3c14cb9b87c5 18 #include "mps2_ethernet_api.h"
mbed_official 580:3c14cb9b87c5 19 #include "cmsis.h"
mbed_official 580:3c14cb9b87c5 20 #include "mbed_interface.h"
mbed_official 580:3c14cb9b87c5 21 #include "toolchain.h"
mbed_official 580:3c14cb9b87c5 22 #include "mbed_error.h"
mbed_official 580:3c14cb9b87c5 23 #include "ETH_MPS2.h"
mbed_official 580:3c14cb9b87c5 24 #include "wait_api.h"
mbed_official 580:3c14cb9b87c5 25
mbed_official 580:3c14cb9b87c5 26 #define TX_PKT_SIZE 256
mbed_official 580:3c14cb9b87c5 27 #define RX_PKT_SIZE 300
mbed_official 580:3c14cb9b87c5 28
mbed_official 580:3c14cb9b87c5 29 // Types
mbed_official 580:3c14cb9b87c5 30 #undef FALSE
mbed_official 580:3c14cb9b87c5 31 #undef TRUE
mbed_official 580:3c14cb9b87c5 32 #define FALSE 0
mbed_official 580:3c14cb9b87c5 33 #define TRUE 1
mbed_official 580:3c14cb9b87c5 34
mbed_official 580:3c14cb9b87c5 35
mbed_official 580:3c14cb9b87c5 36 int smsc9220_check_id(void)
mbed_official 580:3c14cb9b87c5 37 {
mbed_official 580:3c14cb9b87c5 38 int error;
mbed_official 580:3c14cb9b87c5 39 unsigned int id;
mbed_official 580:3c14cb9b87c5 40 error = 0;
mbed_official 580:3c14cb9b87c5 41
mbed_official 580:3c14cb9b87c5 42 id = smsc9220_read_id();
mbed_official 580:3c14cb9b87c5 43
mbed_official 580:3c14cb9b87c5 44 // If bottom and top halves of the word are the same
mbed_official 580:3c14cb9b87c5 45 if(((id >> 16) & 0xFFFF) == (id & 0xFFFF)) {
mbed_official 580:3c14cb9b87c5 46 error = 1;
mbed_official 580:3c14cb9b87c5 47 return error;
mbed_official 580:3c14cb9b87c5 48 }
mbed_official 580:3c14cb9b87c5 49 switch(((id >> 16) & 0xFFFF)) {
mbed_official 580:3c14cb9b87c5 50 case 0x9220:
mbed_official 580:3c14cb9b87c5 51 break;
mbed_official 580:3c14cb9b87c5 52
mbed_official 580:3c14cb9b87c5 53 default:
mbed_official 580:3c14cb9b87c5 54 error = 1;
mbed_official 580:3c14cb9b87c5 55 break;
mbed_official 580:3c14cb9b87c5 56 }
mbed_official 580:3c14cb9b87c5 57
mbed_official 580:3c14cb9b87c5 58 return error;
mbed_official 580:3c14cb9b87c5 59 }
mbed_official 580:3c14cb9b87c5 60
mbed_official 580:3c14cb9b87c5 61 int smsc9220_check_macaddress(void)
mbed_official 580:3c14cb9b87c5 62 {
mbed_official 580:3c14cb9b87c5 63 int error;
mbed_official 580:3c14cb9b87c5 64 const unsigned int mac_valid_high = 0xC00A;
mbed_official 580:3c14cb9b87c5 65 const unsigned int mac_valid_low = 0x00F70200;
mbed_official 580:3c14cb9b87c5 66 unsigned int mac_low;
mbed_official 580:3c14cb9b87c5 67 unsigned int mac_high;
mbed_official 580:3c14cb9b87c5 68
mbed_official 580:3c14cb9b87c5 69 error = 0;
mbed_official 580:3c14cb9b87c5 70
mbed_official 580:3c14cb9b87c5 71 // Read current mac address.
mbed_official 580:3c14cb9b87c5 72 smsc9220_mac_regread(SMSC9220_MAC_ADDRH, &mac_high);
mbed_official 580:3c14cb9b87c5 73 smsc9220_mac_regread(SMSC9220_MAC_ADDRL, &mac_low);
mbed_official 580:3c14cb9b87c5 74
mbed_official 580:3c14cb9b87c5 75 // Writing temporary address:
mbed_official 580:3c14cb9b87c5 76 smsc9220_mac_regwrite(SMSC9220_MAC_ADDRH, mac_valid_high);
mbed_official 580:3c14cb9b87c5 77 smsc9220_mac_regwrite(SMSC9220_MAC_ADDRL, mac_valid_low);
mbed_official 580:3c14cb9b87c5 78
mbed_official 580:3c14cb9b87c5 79 // Verify write was correct:
mbed_official 580:3c14cb9b87c5 80 smsc9220_mac_regread(SMSC9220_MAC_ADDRH, &mac_high);
mbed_official 580:3c14cb9b87c5 81 smsc9220_mac_regread(SMSC9220_MAC_ADDRL, &mac_low);
mbed_official 580:3c14cb9b87c5 82
mbed_official 580:3c14cb9b87c5 83
mbed_official 580:3c14cb9b87c5 84 if(mac_high != mac_valid_high || mac_low != mac_valid_low) {
mbed_official 580:3c14cb9b87c5 85 error = TRUE;
mbed_official 580:3c14cb9b87c5 86 return error;
mbed_official 580:3c14cb9b87c5 87 }
mbed_official 580:3c14cb9b87c5 88
mbed_official 580:3c14cb9b87c5 89 return error;
mbed_official 580:3c14cb9b87c5 90 }
mbed_official 580:3c14cb9b87c5 91
mbed_official 580:3c14cb9b87c5 92
mbed_official 580:3c14cb9b87c5 93 /*----------------------------------------------------------------------------
mbed_official 580:3c14cb9b87c5 94 Ethernet Device initialize
mbed_official 580:3c14cb9b87c5 95 *----------------------------------------------------------------------------*/
mbed_official 580:3c14cb9b87c5 96
mbed_official 580:3c14cb9b87c5 97 int ethernet_transmission(unsigned char * pkt, unsigned int length)
mbed_official 580:3c14cb9b87c5 98 {
mbed_official 580:3c14cb9b87c5 99 smsc9220_xmit_packet(pkt, length);
mbed_official 580:3c14cb9b87c5 100 return 0;
mbed_official 580:3c14cb9b87c5 101 }
mbed_official 580:3c14cb9b87c5 102
mbed_official 580:3c14cb9b87c5 103 int ethernet_reception(unsigned int *recvbuf, unsigned int *index)
mbed_official 580:3c14cb9b87c5 104 {
mbed_official 580:3c14cb9b87c5 105 return smsc9220_recv_packet((unsigned int *)recvbuf, index);
mbed_official 580:3c14cb9b87c5 106 }
mbed_official 580:3c14cb9b87c5 107
mbed_official 580:3c14cb9b87c5 108 int ethernet_mac_address(char *mac)
mbed_official 580:3c14cb9b87c5 109 {
mbed_official 580:3c14cb9b87c5 110 return smsc9220_check_macaddress();
mbed_official 580:3c14cb9b87c5 111 }
mbed_official 580:3c14cb9b87c5 112
mbed_official 580:3c14cb9b87c5 113 unsigned int ethernet_check_ready(void)
mbed_official 580:3c14cb9b87c5 114 {
mbed_official 580:3c14cb9b87c5 115 return smsc9220_check_ready();
mbed_official 580:3c14cb9b87c5 116 }
mbed_official 580:3c14cb9b87c5 117
mbed_official 580:3c14cb9b87c5 118 unsigned int ethernet_intf()
mbed_official 580:3c14cb9b87c5 119 {
mbed_official 580:3c14cb9b87c5 120 unsigned int txfifo_inf;
mbed_official 580:3c14cb9b87c5 121
mbed_official 580:3c14cb9b87c5 122 txfifo_inf = SMSC9220->TX_FIFO_INF;
mbed_official 580:3c14cb9b87c5 123
mbed_official 580:3c14cb9b87c5 124 return txfifo_inf;
mbed_official 580:3c14cb9b87c5 125
mbed_official 580:3c14cb9b87c5 126 }
mbed_official 580:3c14cb9b87c5 127