Device interface library for multiple platforms including Mbed.

Dependents:   DeepCover Embedded Security in IoT MaximInterface MAXREFDES155#

Maxim Interface is a library framework focused on providing flexible and expressive hardware interfaces. Both communication interfaces such as I2C and 1-Wire and device interfaces such as DS18B20 are supported. Modern C++ concepts are used extensively while keeping compatibility with C++98/C++03 and requiring no external dependencies. The embedded-friendly design does not depend on exceptions or RTTI.

The full version of the project is hosted on GitLab: https://gitlab.com/iabenz/MaximInterface

Revision:
8:5ea891c7d1a1
Parent:
7:9cd16581b578
Child:
11:3f3bf6bf5e6c
--- a/MaximInterfaceMbed/Uart.cpp	Mon Jul 22 11:44:07 2019 -0500
+++ b/MaximInterfaceMbed/Uart.cpp	Mon Sep 16 11:13:37 2019 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
-* Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved.
+* Copyright (C) Maxim Integrated Products, Inc., All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
@@ -40,64 +40,61 @@
 
 static const int timeout_ms = 10000;
 
-error_code Uart::setBaudRate(int_least32_t baudRate) {
+Result<void> Uart::setBaudRate(int_least32_t baudRate) {
   serial->baud(baudRate);
-  return error_code();
+  return none;
 }
 
-error_code Uart::sendBreak() {
+Result<void> Uart::sendBreak() {
   serial->send_break();
-  return error_code();
+  return none;
 }
 
-error_code Uart::clearReadBuffer() {
+Result<void> Uart::clearReadBuffer() {
   while (serial->readable()) {
     serial->getc();
   }
-  return error_code();
+  return none;
 }
 
-error_code Uart::writeByte(uint_least8_t data) {
+Result<void> Uart::writeByte(uint_least8_t data) {
   if (!serial->writeable()) {
     mbed::Timer timer;
     timer.start();
     while (!serial->writeable()) {
       if (timer.read_ms() >= timeout_ms) {
-        return make_error_code(HardwareError);
+        return HardwareError;
       }
     }
   }
   serial->putc(data);
-  return error_code();
+  return none;
 }
 
-error_code Uart::readByte(uint_least8_t & data) {
+Result<uint_least8_t> Uart::readByte() {
   if (!serial->readable()) {
     mbed::Timer timer;
     timer.start();
     while (!serial->readable()) {
       if (timer.read_ms() >= timeout_ms) {
-        return make_error_code(TimeoutError);
+        return TimeoutError;
       }
     }
   }
-  data = serial->getc();
-  return error_code();
+  return serial->getc();
 }
 
 const error_category & Uart::errorCategory() {
   static class : public error_category {
   public:
-    virtual const char * name() const { return "mbed UART"; }
+    virtual const char * name() const { return "Mbed UART"; }
 
     virtual std::string message(int condition) const {
       switch (condition) {
       case HardwareError:
         return "Hardware Error";
-
-      default:
-        return defaultErrorMessage(condition);
       }
+      return defaultErrorMessage(condition);
     }
   } instance;
   return instance;