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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
165:d1b4690b3f8b
Child:
170:e95d10626187
mbed library. Release version 162

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 165:d1b4690b3f8b 1 /* mbed Microcontroller Library
AnnaBridge 165:d1b4690b3f8b 2 * Copyright (c) 2017 ARM Limited
AnnaBridge 165:d1b4690b3f8b 3 *
AnnaBridge 165:d1b4690b3f8b 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 165:d1b4690b3f8b 5 * you may not use this file except in compliance with the License.
AnnaBridge 165:d1b4690b3f8b 6 * You may obtain a copy of the License at
AnnaBridge 165:d1b4690b3f8b 7 *
AnnaBridge 165:d1b4690b3f8b 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 165:d1b4690b3f8b 9 *
AnnaBridge 165:d1b4690b3f8b 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 165:d1b4690b3f8b 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 165:d1b4690b3f8b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 165:d1b4690b3f8b 13 * See the License for the specific language governing permissions and
AnnaBridge 165:d1b4690b3f8b 14 * limitations under the License.
AnnaBridge 165:d1b4690b3f8b 15 */
AnnaBridge 165:d1b4690b3f8b 16
AnnaBridge 165:d1b4690b3f8b 17 #if defined(DEVICE_ITM)
AnnaBridge 165:d1b4690b3f8b 18
AnnaBridge 165:d1b4690b3f8b 19 #include "hal/itm_api.h"
AnnaBridge 165:d1b4690b3f8b 20 #include "platform/FileHandle.h"
AnnaBridge 165:d1b4690b3f8b 21
Anna Bridge 169:a7c7b631e539 22 namespace mbed {
Anna Bridge 169:a7c7b631e539 23
AnnaBridge 165:d1b4690b3f8b 24 class SerialWireOutput : public FileHandle {
Anna Bridge 169:a7c7b631e539 25
AnnaBridge 165:d1b4690b3f8b 26 public:
Anna Bridge 169:a7c7b631e539 27
AnnaBridge 165:d1b4690b3f8b 28 SerialWireOutput(void)
AnnaBridge 165:d1b4690b3f8b 29 {
AnnaBridge 165:d1b4690b3f8b 30 /* Initialize ITM using internal init function. */
AnnaBridge 165:d1b4690b3f8b 31 mbed_itm_init();
AnnaBridge 165:d1b4690b3f8b 32 }
AnnaBridge 165:d1b4690b3f8b 33
AnnaBridge 165:d1b4690b3f8b 34 virtual ssize_t write(const void *buffer, size_t size)
AnnaBridge 165:d1b4690b3f8b 35 {
AnnaBridge 165:d1b4690b3f8b 36 const unsigned char *buf = static_cast<const unsigned char *>(buffer);
AnnaBridge 165:d1b4690b3f8b 37
AnnaBridge 165:d1b4690b3f8b 38 /* Send buffer one character at a time over the ITM SWO port */
AnnaBridge 165:d1b4690b3f8b 39 for (size_t i = 0; i < size; i++) {
AnnaBridge 165:d1b4690b3f8b 40 mbed_itm_send(ITM_PORT_SWO, buf[i]);
AnnaBridge 165:d1b4690b3f8b 41 }
AnnaBridge 165:d1b4690b3f8b 42 return size;
AnnaBridge 165:d1b4690b3f8b 43 }
AnnaBridge 165:d1b4690b3f8b 44
AnnaBridge 165:d1b4690b3f8b 45 virtual ssize_t read(void *buffer, size_t size)
AnnaBridge 165:d1b4690b3f8b 46 {
AnnaBridge 165:d1b4690b3f8b 47 /* Reading is not supported by this file handle */
AnnaBridge 165:d1b4690b3f8b 48 return -EBADF;
AnnaBridge 165:d1b4690b3f8b 49 }
AnnaBridge 165:d1b4690b3f8b 50
AnnaBridge 165:d1b4690b3f8b 51 virtual off_t seek(off_t offset, int whence = SEEK_SET)
AnnaBridge 165:d1b4690b3f8b 52 {
AnnaBridge 165:d1b4690b3f8b 53 /* Seeking is not support by this file handler */
AnnaBridge 165:d1b4690b3f8b 54 return -ESPIPE;
AnnaBridge 165:d1b4690b3f8b 55 }
AnnaBridge 165:d1b4690b3f8b 56
AnnaBridge 165:d1b4690b3f8b 57 virtual off_t size()
AnnaBridge 165:d1b4690b3f8b 58 {
AnnaBridge 165:d1b4690b3f8b 59 /* Size is not defined for this file handle */
AnnaBridge 165:d1b4690b3f8b 60 return -EINVAL;
AnnaBridge 165:d1b4690b3f8b 61 }
AnnaBridge 165:d1b4690b3f8b 62
AnnaBridge 165:d1b4690b3f8b 63 virtual int isatty()
AnnaBridge 165:d1b4690b3f8b 64 {
AnnaBridge 165:d1b4690b3f8b 65 /* File handle is used for terminal output */
AnnaBridge 165:d1b4690b3f8b 66 return true;
AnnaBridge 165:d1b4690b3f8b 67 }
AnnaBridge 165:d1b4690b3f8b 68
AnnaBridge 165:d1b4690b3f8b 69 virtual int close()
AnnaBridge 165:d1b4690b3f8b 70 {
AnnaBridge 165:d1b4690b3f8b 71 return 0;
AnnaBridge 165:d1b4690b3f8b 72 }
AnnaBridge 165:d1b4690b3f8b 73 };
Anna Bridge 169:a7c7b631e539 74
Anna Bridge 169:a7c7b631e539 75 } // namespace mbed
AnnaBridge 165:d1b4690b3f8b 76
AnnaBridge 165:d1b4690b3f8b 77 #endif