5.2.1 - Updated I2C files

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
jacobjohnson
Date:
Mon Feb 27 17:45:05 2017 +0000
Revision:
1:f30bdcd2b33b
Parent:
0:098463de4c5d
changed the inputscale from 1 to 7 in analogin_api.c.  This will need to be changed later, and accessed from the main level, but for now this allows the  adc to read a value from 0 to 3.7V, instead of just up to 1V.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 /* Socket
group-onsemi 0:098463de4c5d 2 * Copyright (c) 2015 ARM Limited
group-onsemi 0:098463de4c5d 3 *
group-onsemi 0:098463de4c5d 4 * Licensed under the Apache License, Version 2.0 (the "License");
group-onsemi 0:098463de4c5d 5 * you may not use this file except in compliance with the License.
group-onsemi 0:098463de4c5d 6 * You may obtain a copy of the License at
group-onsemi 0:098463de4c5d 7 *
group-onsemi 0:098463de4c5d 8 * http://www.apache.org/licenses/LICENSE-2.0
group-onsemi 0:098463de4c5d 9 *
group-onsemi 0:098463de4c5d 10 * Unless required by applicable law or agreed to in writing, software
group-onsemi 0:098463de4c5d 11 * distributed under the License is distributed on an "AS IS" BASIS,
group-onsemi 0:098463de4c5d 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
group-onsemi 0:098463de4c5d 13 * See the License for the specific language governing permissions and
group-onsemi 0:098463de4c5d 14 * limitations under the License.
group-onsemi 0:098463de4c5d 15 */
group-onsemi 0:098463de4c5d 16
group-onsemi 0:098463de4c5d 17 #include "Socket.h"
group-onsemi 0:098463de4c5d 18 #include "mbed.h"
group-onsemi 0:098463de4c5d 19
group-onsemi 0:098463de4c5d 20 Socket::Socket()
group-onsemi 0:098463de4c5d 21 : _stack(0)
group-onsemi 0:098463de4c5d 22 , _socket(0)
group-onsemi 0:098463de4c5d 23 , _timeout(osWaitForever)
group-onsemi 0:098463de4c5d 24 {
group-onsemi 0:098463de4c5d 25 }
group-onsemi 0:098463de4c5d 26
group-onsemi 0:098463de4c5d 27 nsapi_error_t Socket::open(NetworkStack *stack)
group-onsemi 0:098463de4c5d 28 {
group-onsemi 0:098463de4c5d 29 _lock.lock();
group-onsemi 0:098463de4c5d 30
group-onsemi 0:098463de4c5d 31 if (_stack != NULL || stack == NULL) {
group-onsemi 0:098463de4c5d 32 _lock.unlock();
group-onsemi 0:098463de4c5d 33 return NSAPI_ERROR_PARAMETER;
group-onsemi 0:098463de4c5d 34 }
group-onsemi 0:098463de4c5d 35 _stack = stack;
group-onsemi 0:098463de4c5d 36
group-onsemi 0:098463de4c5d 37 nsapi_socket_t socket;
group-onsemi 0:098463de4c5d 38 nsapi_error_t err = _stack->socket_open(&socket, get_proto());
group-onsemi 0:098463de4c5d 39 if (err) {
group-onsemi 0:098463de4c5d 40 _lock.unlock();
group-onsemi 0:098463de4c5d 41 return err;
group-onsemi 0:098463de4c5d 42 }
group-onsemi 0:098463de4c5d 43
group-onsemi 0:098463de4c5d 44 _socket = socket;
group-onsemi 0:098463de4c5d 45 _event.attach(this, &Socket::event);
group-onsemi 0:098463de4c5d 46 _stack->socket_attach(_socket, Callback<void()>::thunk, &_event);
group-onsemi 0:098463de4c5d 47
group-onsemi 0:098463de4c5d 48 _lock.unlock();
group-onsemi 0:098463de4c5d 49 return NSAPI_ERROR_OK;
group-onsemi 0:098463de4c5d 50 }
group-onsemi 0:098463de4c5d 51
group-onsemi 0:098463de4c5d 52 nsapi_error_t Socket::close()
group-onsemi 0:098463de4c5d 53 {
group-onsemi 0:098463de4c5d 54 _lock.lock();
group-onsemi 0:098463de4c5d 55
group-onsemi 0:098463de4c5d 56 nsapi_error_t ret = NSAPI_ERROR_OK;
group-onsemi 0:098463de4c5d 57 if (_socket) {
group-onsemi 0:098463de4c5d 58 _stack->socket_attach(_socket, 0, 0);
group-onsemi 0:098463de4c5d 59 nsapi_socket_t socket = _socket;
group-onsemi 0:098463de4c5d 60 _socket = 0;
group-onsemi 0:098463de4c5d 61 ret = _stack->socket_close(socket);
group-onsemi 0:098463de4c5d 62 }
group-onsemi 0:098463de4c5d 63 _stack = 0;
group-onsemi 0:098463de4c5d 64
group-onsemi 0:098463de4c5d 65 // Wakeup anything in a blocking operation
group-onsemi 0:098463de4c5d 66 // on this socket
group-onsemi 0:098463de4c5d 67 event();
group-onsemi 0:098463de4c5d 68
group-onsemi 0:098463de4c5d 69 _lock.unlock();
group-onsemi 0:098463de4c5d 70 return ret;
group-onsemi 0:098463de4c5d 71 }
group-onsemi 0:098463de4c5d 72
group-onsemi 0:098463de4c5d 73 nsapi_error_t Socket::bind(uint16_t port)
group-onsemi 0:098463de4c5d 74 {
group-onsemi 0:098463de4c5d 75 // Underlying bind is thread safe
group-onsemi 0:098463de4c5d 76 SocketAddress addr(0, port);
group-onsemi 0:098463de4c5d 77 return bind(addr);
group-onsemi 0:098463de4c5d 78 }
group-onsemi 0:098463de4c5d 79
group-onsemi 0:098463de4c5d 80 nsapi_error_t Socket::bind(const char *address, uint16_t port)
group-onsemi 0:098463de4c5d 81 {
group-onsemi 0:098463de4c5d 82 // Underlying bind is thread safe
group-onsemi 0:098463de4c5d 83 SocketAddress addr(address, port);
group-onsemi 0:098463de4c5d 84 return bind(addr);
group-onsemi 0:098463de4c5d 85 }
group-onsemi 0:098463de4c5d 86
group-onsemi 0:098463de4c5d 87 nsapi_error_t Socket::bind(const SocketAddress &address)
group-onsemi 0:098463de4c5d 88 {
group-onsemi 0:098463de4c5d 89 _lock.lock();
group-onsemi 0:098463de4c5d 90 nsapi_error_t ret;
group-onsemi 0:098463de4c5d 91
group-onsemi 0:098463de4c5d 92 if (!_socket) {
group-onsemi 0:098463de4c5d 93 ret = NSAPI_ERROR_NO_SOCKET;
group-onsemi 0:098463de4c5d 94 } else {
group-onsemi 0:098463de4c5d 95 ret = _stack->socket_bind(_socket, address);
group-onsemi 0:098463de4c5d 96 }
group-onsemi 0:098463de4c5d 97
group-onsemi 0:098463de4c5d 98 _lock.unlock();
group-onsemi 0:098463de4c5d 99 return ret;
group-onsemi 0:098463de4c5d 100 }
group-onsemi 0:098463de4c5d 101
group-onsemi 0:098463de4c5d 102 void Socket::set_blocking(bool blocking)
group-onsemi 0:098463de4c5d 103 {
group-onsemi 0:098463de4c5d 104 // Socket::set_timeout is thread safe
group-onsemi 0:098463de4c5d 105 set_timeout(blocking ? -1 : 0);
group-onsemi 0:098463de4c5d 106 }
group-onsemi 0:098463de4c5d 107
group-onsemi 0:098463de4c5d 108 void Socket::set_timeout(int timeout)
group-onsemi 0:098463de4c5d 109 {
group-onsemi 0:098463de4c5d 110 _lock.lock();
group-onsemi 0:098463de4c5d 111
group-onsemi 0:098463de4c5d 112 if (timeout >= 0) {
group-onsemi 0:098463de4c5d 113 _timeout = (uint32_t)timeout;
group-onsemi 0:098463de4c5d 114 } else {
group-onsemi 0:098463de4c5d 115 _timeout = osWaitForever;
group-onsemi 0:098463de4c5d 116 }
group-onsemi 0:098463de4c5d 117
group-onsemi 0:098463de4c5d 118 _lock.unlock();
group-onsemi 0:098463de4c5d 119 }
group-onsemi 0:098463de4c5d 120
group-onsemi 0:098463de4c5d 121 nsapi_error_t Socket::setsockopt(int level, int optname, const void *optval, unsigned optlen)
group-onsemi 0:098463de4c5d 122 {
group-onsemi 0:098463de4c5d 123 _lock.lock();
group-onsemi 0:098463de4c5d 124 nsapi_error_t ret;
group-onsemi 0:098463de4c5d 125
group-onsemi 0:098463de4c5d 126 if (!_socket) {
group-onsemi 0:098463de4c5d 127 ret = NSAPI_ERROR_NO_SOCKET;
group-onsemi 0:098463de4c5d 128 } else {
group-onsemi 0:098463de4c5d 129 ret = _stack->setsockopt(_socket, level, optname, optval, optlen);
group-onsemi 0:098463de4c5d 130 }
group-onsemi 0:098463de4c5d 131
group-onsemi 0:098463de4c5d 132 _lock.unlock();
group-onsemi 0:098463de4c5d 133 return ret;
group-onsemi 0:098463de4c5d 134 }
group-onsemi 0:098463de4c5d 135
group-onsemi 0:098463de4c5d 136 nsapi_error_t Socket::getsockopt(int level, int optname, void *optval, unsigned *optlen)
group-onsemi 0:098463de4c5d 137 {
group-onsemi 0:098463de4c5d 138 _lock.lock();
group-onsemi 0:098463de4c5d 139 nsapi_error_t ret;
group-onsemi 0:098463de4c5d 140
group-onsemi 0:098463de4c5d 141 if (!_socket) {
group-onsemi 0:098463de4c5d 142 ret = NSAPI_ERROR_NO_SOCKET;
group-onsemi 0:098463de4c5d 143 } else {
group-onsemi 0:098463de4c5d 144 ret = _stack->getsockopt(_socket, level, optname, optval, optlen);
group-onsemi 0:098463de4c5d 145 }
group-onsemi 0:098463de4c5d 146
group-onsemi 0:098463de4c5d 147 _lock.unlock();
group-onsemi 0:098463de4c5d 148 return ret;
group-onsemi 0:098463de4c5d 149
group-onsemi 0:098463de4c5d 150 }
group-onsemi 0:098463de4c5d 151
group-onsemi 0:098463de4c5d 152 void Socket::attach(Callback<void()> callback)
group-onsemi 0:098463de4c5d 153 {
group-onsemi 0:098463de4c5d 154 _lock.lock();
group-onsemi 0:098463de4c5d 155
group-onsemi 0:098463de4c5d 156 _callback = callback;
group-onsemi 0:098463de4c5d 157
group-onsemi 0:098463de4c5d 158 _lock.unlock();
group-onsemi 0:098463de4c5d 159 }