mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			
						commit
						f6d0c29b95
					
				| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include "platform/platform.h"
 | 
			
		||||
#include "drivers/DigitalIn.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +29,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Thread safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class BusIn {
 | 
			
		||||
class BusIn : private NonCopyable<BusIn> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    /* Group: Configuration Methods */
 | 
			
		||||
| 
						 | 
				
			
			@ -115,12 +116,9 @@ protected:
 | 
			
		|||
 | 
			
		||||
    PlatformMutex _mutex;
 | 
			
		||||
 | 
			
		||||
    /* disallow copy constructor and assignment operators */
 | 
			
		||||
private:
 | 
			
		||||
    virtual void lock();
 | 
			
		||||
    virtual void unlock();
 | 
			
		||||
    BusIn(const BusIn&);
 | 
			
		||||
    BusIn & operator = (const BusIn&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "drivers/DigitalInOut.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +28,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Thread safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class BusInOut {
 | 
			
		||||
class BusInOut : private NonCopyable<BusInOut> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -135,11 +136,6 @@ protected:
 | 
			
		|||
    int _nc_mask;
 | 
			
		||||
 | 
			
		||||
    PlatformMutex _mutex;
 | 
			
		||||
 | 
			
		||||
    /* disallow copy constructor and assignment operators */
 | 
			
		||||
private:
 | 
			
		||||
    BusInOut(const BusInOut&);
 | 
			
		||||
    BusInOut & operator = (const BusInOut&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "drivers/DigitalOut.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +26,7 @@ namespace mbed {
 | 
			
		|||
/** A digital output bus, used for setting the state of a collection of pins
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class BusOut {
 | 
			
		||||
class BusOut : private NonCopyable<BusOut> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -119,11 +120,6 @@ protected:
 | 
			
		|||
    int _nc_mask;
 | 
			
		||||
 | 
			
		||||
    PlatformMutex _mutex;
 | 
			
		||||
 | 
			
		||||
   /* disallow copy constructor and assignment operators */
 | 
			
		||||
private:
 | 
			
		||||
    BusOut(const BusOut&);
 | 
			
		||||
    BusOut & operator = (const BusOut&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
#include "hal/can_api.h"
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +79,7 @@ public:
 | 
			
		|||
/** A can bus client, used for communicating with can devices
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class CAN {
 | 
			
		||||
class CAN : private NonCopyable<CAN> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    /** Creates an CAN interface connected to specific pins.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
#define MBED_ETHERNET_H
 | 
			
		||||
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if defined (DEVICE_ETHERNET) || defined(DOXYGEN_ONLY)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +55,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class Ethernet {
 | 
			
		||||
class Ethernet : private NonCopyable<Ethernet> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@
 | 
			
		|||
#include "flash_api.h"
 | 
			
		||||
#include "platform/SingletonPtr.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Thread safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class FlashIAP {
 | 
			
		||||
class FlashIAP : private NonCopyable<FlashIAP> {
 | 
			
		||||
public:
 | 
			
		||||
    FlashIAP();
 | 
			
		||||
    ~FlashIAP();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
#include "hal/i2c_api.h"
 | 
			
		||||
#include "platform/SingletonPtr.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if DEVICE_I2C_ASYNCH
 | 
			
		||||
#include "platform/CThunk.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +54,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class I2C {
 | 
			
		||||
class I2C : private NonCopyable<I2C> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    enum RxStatus {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,7 @@
 | 
			
		|||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/mbed_critical.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +57,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class InterruptIn {
 | 
			
		||||
class InterruptIn : private NonCopyable<InterruptIn> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include "cmsis.h"
 | 
			
		||||
#include "platform/CallChain.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +54,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class InterruptManager {
 | 
			
		||||
class InterruptManager : private NonCopyable<InterruptManager> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Get the instance of InterruptManager Class
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -138,12 +139,6 @@ private:
 | 
			
		|||
    void lock();
 | 
			
		||||
    void unlock();
 | 
			
		||||
 | 
			
		||||
    // We declare the copy contructor and the assignment operator, but we don't
 | 
			
		||||
    // implement them. This way, if someone tries to copy/assign our instance,
 | 
			
		||||
    // he will get an error at compile time.
 | 
			
		||||
    InterruptManager(const InterruptManager&);
 | 
			
		||||
    InterruptManager& operator =(const InterruptManager&);
 | 
			
		||||
 | 
			
		||||
    template<typename T>
 | 
			
		||||
    pFunctionPointer_t add_common(T *tptr, void (T::*mptr)(void), IRQn_Type irq, bool front=false) {
 | 
			
		||||
        _mutex.lock();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "drivers/Ticker.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if defined (DEVICE_LOWPOWERTIMER) || defined(DOXYGEN_ONLY)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Interrupt safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class LowPowerTicker : public Ticker {
 | 
			
		||||
class LowPowerTicker : public Ticker, private NonCopyable<LowPowerTicker> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    LowPowerTicker() : Ticker(get_lp_ticker_data()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
 | 
			
		||||
#include "hal/lp_ticker_api.h"
 | 
			
		||||
#include "drivers/LowPowerTicker.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Interrupt safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class LowPowerTimeout : public LowPowerTicker {
 | 
			
		||||
class LowPowerTimeout : public LowPowerTicker, private NonCopyable<LowPowerTimeout> {
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    virtual void handler(void) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "drivers/Timer.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if defined (DEVICE_LOWPOWERTIMER) || defined(DOXYGEN_ONLY)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Interrupt safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class LowPowerTimer : public Timer {
 | 
			
		||||
class LowPowerTimer : public Timer, private NonCopyable<LowPowerTimer> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    LowPowerTimer() : Timer(get_lp_ticker_data()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
 | 
			
		||||
#include "drivers/SerialBase.h"
 | 
			
		||||
#include "hal/serial_api.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +50,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class RawSerial: public SerialBase {
 | 
			
		||||
class RawSerial: public SerialBase, private NonCopyable<RawSerial> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    /** Create a RawSerial port, connected to the specified transmit and receive pins, with the specified baud.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "hal/spi_api.h"
 | 
			
		||||
#include "platform/SingletonPtr.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if DEVICE_SPI_ASYNCH
 | 
			
		||||
#include "platform/CThunk.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +73,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class SPI {
 | 
			
		||||
class SPI : private NonCopyable<SPI> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
#define MBED_SPISLAVE_H
 | 
			
		||||
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if defined (DEVICE_SPISLAVE) || defined(DOXYGEN_ONLY)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +53,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class SPISlave {
 | 
			
		||||
class SPISlave : private NonCopyable<SPISlave> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@
 | 
			
		|||
#include "SerialBase.h"
 | 
			
		||||
#include "PlatformMutex.h"
 | 
			
		||||
#include "serial_api.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +50,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class Serial : public SerialBase, public Stream {
 | 
			
		||||
class Serial : public SerialBase, public Stream, private NonCopyable<Serial> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
#if DEVICE_SERIAL_ASYNCH
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
#include "Callback.h"
 | 
			
		||||
#include "serial_api.h"
 | 
			
		||||
#include "mbed_toolchain.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#if DEVICE_SERIAL_ASYNCH
 | 
			
		||||
#include "CThunk.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +39,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Set by subclass
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class SerialBase {
 | 
			
		||||
class SerialBase : private NonCopyable<SerialBase> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    /** Set the baud rate of the serial port
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include "drivers/TimerEvent.h"
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +60,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class Ticker : public TimerEvent {
 | 
			
		||||
class Ticker : public TimerEvent, private NonCopyable<Ticker> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    Ticker() : TimerEvent() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
#define MBED_TIMEOUT_H
 | 
			
		||||
 | 
			
		||||
#include "drivers/Ticker.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +53,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class Timeout : public Ticker {
 | 
			
		||||
class Timeout : public Ticker, private NonCopyable<Timeout> {
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    virtual void handler();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "hal/ticker_api.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +47,7 @@ namespace mbed {
 | 
			
		|||
 * @endcode
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class Timer {
 | 
			
		||||
class Timer : private NonCopyable<Timer> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    Timer();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "hal/ticker_api.h"
 | 
			
		||||
#include "hal/us_ticker_api.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +28,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Interrupt safe
 | 
			
		||||
 * @ingroup drivers
 | 
			
		||||
 */
 | 
			
		||||
class TimerEvent {
 | 
			
		||||
class TimerEvent : private NonCopyable<TimerEvent> {
 | 
			
		||||
public:
 | 
			
		||||
    TimerEvent();
 | 
			
		||||
    TimerEvent(const ticker_data_t *data);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@
 | 
			
		|||
#include "PlatformMutex.h"
 | 
			
		||||
#include "serial_api.h"
 | 
			
		||||
#include "CircularBuffer.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE
 | 
			
		||||
#define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE  256
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +39,7 @@
 | 
			
		|||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
class UARTSerial : private SerialBase, public FileHandle {
 | 
			
		||||
class UARTSerial : private SerialBase, public FileHandle, private NonCopyable<UARTSerial> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
 | 
			
		||||
#include "equeue/equeue.h"
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include <cstddef>
 | 
			
		||||
#include <new>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@ class Event;
 | 
			
		|||
 *  Flexible event queue for dispatching events
 | 
			
		||||
 * @ingroup events
 | 
			
		||||
 */
 | 
			
		||||
class EventQueue {
 | 
			
		||||
class EventQueue : private mbed::NonCopyable<EventQueue> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create an EventQueue
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
 | 
			
		||||
class ATCmdParser
 | 
			
		||||
class ATCmdParser : private NonCopyable<ATCmdParser>
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
    // File handle
 | 
			
		||||
| 
						 | 
				
			
			@ -70,11 +70,6 @@ private:
 | 
			
		|||
    };
 | 
			
		||||
    oob *_oobs;
 | 
			
		||||
 | 
			
		||||
    // Prohibiting use of of copy constructor
 | 
			
		||||
    ATCmdParser(const ATCmdParser &);
 | 
			
		||||
    // Prohibiting copy assignment Operator
 | 
			
		||||
    ATCmdParser &operator=(const ATCmdParser &);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +66,7 @@ namespace mbed {
 | 
			
		|||
typedef Callback<void()> *pFunctionPointer_t;
 | 
			
		||||
class CallChainLink;
 | 
			
		||||
 | 
			
		||||
class CallChain {
 | 
			
		||||
class CallChain : private NonCopyable<CallChain> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create an empty chain
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -178,10 +179,7 @@ public:
 | 
			
		|||
        return get(i);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* disallow copy constructor and assignment operators */
 | 
			
		||||
private:
 | 
			
		||||
    CallChain(const CallChain&);
 | 
			
		||||
    CallChain & operator = (const CallChain&);
 | 
			
		||||
    CallChainLink *_chain;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include <stdint.h>
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/FileHandle.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@ namespace mbed {
 | 
			
		|||
 *  @note Synchronization level: Set by subclass
 | 
			
		||||
 *  @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class DirHandle {
 | 
			
		||||
class DirHandle : private NonCopyable<DirHandle> {
 | 
			
		||||
public:
 | 
			
		||||
    virtual ~DirHandle() {}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@ typedef int FILEHANDLE;
 | 
			
		|||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/SingletonPtr.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +40,7 @@ typedef enum {
 | 
			
		|||
 * @class FileBase
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class FileBase {
 | 
			
		||||
class FileBase : private NonCopyable<FileBase> {
 | 
			
		||||
public:
 | 
			
		||||
    FileBase(const char *name, PathType t);
 | 
			
		||||
    virtual ~FileBase();
 | 
			
		||||
| 
						 | 
				
			
			@ -59,8 +60,6 @@ private:
 | 
			
		|||
    FileBase   *_next;
 | 
			
		||||
    const char * const _name;
 | 
			
		||||
    const PathType _path_type;
 | 
			
		||||
    FileBase(const FileBase&);
 | 
			
		||||
    FileBase & operator = (const FileBase&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ typedef int FILEHANDLE;
 | 
			
		|||
#include "Callback.h"
 | 
			
		||||
#include "platform/mbed_poll.h"
 | 
			
		||||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ namespace mbed {
 | 
			
		|||
 *  @note Synchronization level: Set by subclass
 | 
			
		||||
 *  @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class FileHandle {
 | 
			
		||||
class FileHandle : private NonCopyable<FileHandle> {
 | 
			
		||||
public:
 | 
			
		||||
    virtual ~FileHandle() {}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "platform/FileBase.h"
 | 
			
		||||
#include "platform/FileHandle.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@ namespace mbed {
 | 
			
		|||
 *  @note Synchronization level: Set by subclass
 | 
			
		||||
 *  @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class FileLike : public FileHandle, public FileBase {
 | 
			
		||||
class FileLike : public FileHandle, public FileBase, private NonCopyable<FileLike> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Constructor FileLike
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@
 | 
			
		|||
#include "platform/FileBase.h"
 | 
			
		||||
#include "platform/FileHandle.h"
 | 
			
		||||
#include "platform/DirHandle.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup drivers */
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +36,7 @@ namespace mbed {
 | 
			
		|||
 *
 | 
			
		||||
 * @note Synchronization level: Set by subclass
 | 
			
		||||
 */
 | 
			
		||||
class FileSystemHandle {
 | 
			
		||||
class FileSystemHandle : private NonCopyable<FileSystemHandle> {
 | 
			
		||||
public:
 | 
			
		||||
    /** FileSystemHandle lifetime
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@
 | 
			
		|||
#include "platform/FileSystemHandle.h"
 | 
			
		||||
#include "platform/FileHandle.h"
 | 
			
		||||
#include "platform/DirHandle.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +36,7 @@ namespace mbed {
 | 
			
		|||
 * @note Synchronization level: Set by subclass
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class FileSystemLike : public FileSystemHandle, public FileBase {
 | 
			
		||||
class FileSystemLike : public FileSystemHandle, public FileBase, private NonCopyable<FileSystemLike> {
 | 
			
		||||
public:
 | 
			
		||||
    /** FileSystemLike lifetime
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
 | 
			
		||||
#include "platform/FileSystemLike.h"
 | 
			
		||||
#include "platform/PlatformMutex.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace mbed {
 | 
			
		||||
/** \addtogroup platform */
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +35,7 @@ FILEHANDLE local_file_open(const char* name, int flags);
 | 
			
		|||
 * @class LocalFileHandle
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class LocalFileHandle : public FileHandle {
 | 
			
		||||
class LocalFileHandle : public FileHandle, private NonCopyable<LocalFileHandle> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    LocalFileHandle(FILEHANDLE fh);
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +99,7 @@ protected:
 | 
			
		|||
 *  not exit, you will need to hold down reset on the mbed Microcontroller to be able to see the drive again!
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class LocalFileSystem : public FileSystemLike {
 | 
			
		||||
class LocalFileSystem : public FileSystemLike, private NonCopyable<LocalFileSystem> {
 | 
			
		||||
    // No modifiable state
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,168 @@
 | 
			
		|||
/* Copyright (c) 2017 ARM Limited
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef MBED_NONCOPYABLE_H_
 | 
			
		||||
#define MBED_NONCOPYABLE_H_
 | 
			
		||||
 | 
			
		||||
namespace mbed { 
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Inheriting from this class autogeneration of copy construction and copy 
 | 
			
		||||
 * assignement operations. 
 | 
			
		||||
 * 
 | 
			
		||||
 * Classes which are not value type should inherit privately from this class 
 | 
			
		||||
 * to avoid generation of invalid copy constructor or copy assignement operator
 | 
			
		||||
 * which can lead to unoticeable programming errors. 
 | 
			
		||||
 * 
 | 
			
		||||
 * As an example consider the following signature: 
 | 
			
		||||
 * 
 | 
			
		||||
 * @code
 | 
			
		||||
 * class Resource; 
 | 
			
		||||
 *
 | 
			
		||||
 * class Foo { 
 | 
			
		||||
 * public:     
 | 
			
		||||
 *   Foo() : _resource(new Resource()) { }
 | 
			
		||||
 *   ~Foo() { delete _resource; } 
 | 
			
		||||
 * private:
 | 
			
		||||
 *   Resource* _resource;
 | 
			
		||||
 * }
 | 
			
		||||
 * 
 | 
			
		||||
 * Foo get_foo();
 | 
			
		||||
 * 
 | 
			
		||||
 * Foo foo = get_foo();
 | 
			
		||||
 * @endcode 
 | 
			
		||||
 * 
 | 
			
		||||
 * There is a bug in this function, it returns a temporary value which will be 
 | 
			
		||||
 * byte copied into foo then destroyed. Unfortunately, internaly the Foo class 
 | 
			
		||||
 * manage a pointer to a Resource object. This pointer will be released when the 
 | 
			
		||||
 * temporary is destroyed and foo will manage a pointer to an already released 
 | 
			
		||||
 * Resource.
 | 
			
		||||
 * 
 | 
			
		||||
 * Two issues has to be fixed in the example above: 
 | 
			
		||||
 *   - Function signature has to be changed to reflect the fact that Foo 
 | 
			
		||||
 *     instances cannot be copied. In that case accessor should return a 
 | 
			
		||||
 *     reference to give access to objects already existing and managed. 
 | 
			
		||||
 *     Generator on the other hand should return a pointer to the created object.
 | 
			
		||||
 * 
 | 
			
		||||
 * @code 
 | 
			
		||||
 * // return a reference to an already managed Foo instance
 | 
			
		||||
 * Foo& get_foo(); 
 | 
			
		||||
 * Foo& foo = get_foo();
 | 
			
		||||
 * 
 | 
			
		||||
 * // create a new Foo instance
 | 
			
		||||
 * Foo* make_foo();
 | 
			
		||||
 * Foo* m = make_foo();
 | 
			
		||||
 * @endcode
 | 
			
		||||
 * 
 | 
			
		||||
 *   - Copy constructor and copy assignement operator has to be made private 
 | 
			
		||||
 *     in the Foo class. It prevents unwanted copy of Foo objects. This can be 
 | 
			
		||||
 *     done by declaring copy constructor and copy assignement in the private 
 | 
			
		||||
 *     section of the Foo class.
 | 
			
		||||
 *     
 | 
			
		||||
 * @code 
 | 
			
		||||
 * class Foo { 
 | 
			
		||||
 * public:     
 | 
			
		||||
 *   Foo() : _resource(new Resource()) { }
 | 
			
		||||
 *   ~Foo() { delete _resource; } 
 | 
			
		||||
 * private:
 | 
			
		||||
 *   // disallow copy operations 
 | 
			
		||||
 *   Foo(const Foo&);
 | 
			
		||||
 *   Foo& operator=(const Foo&);
 | 
			
		||||
 *   // data members 
 | 
			
		||||
 *   Resource* _resource;
 | 
			
		||||
 * }
 | 
			
		||||
 * @endcode
 | 
			
		||||
 * 
 | 
			
		||||
 * Another solution is to inherit privately from the NonCopyable class. 
 | 
			
		||||
 * It reduces the boiler plate needed to avoid copy operations but more 
 | 
			
		||||
 * importantly it clarifies the programer intent and the object semantic.
 | 
			
		||||
 *
 | 
			
		||||
 * class Foo : private NonCopyable<Foo> { 
 | 
			
		||||
 * public:     
 | 
			
		||||
 *   Foo() : _resource(new Resource()) { }
 | 
			
		||||
 *   ~Foo() { delete _resource; } 
 | 
			
		||||
 * private:
 | 
			
		||||
 *   Resource* _resource;
 | 
			
		||||
 * }
 | 
			
		||||
 * 
 | 
			
		||||
 * @tparam T The type that should be made non copyable. It prevent cases where 
 | 
			
		||||
 * the empty base optimization cannot be applied and therefore ensure that the 
 | 
			
		||||
 * cost of this semantic sugar is null. 
 | 
			
		||||
 * 
 | 
			
		||||
 * As an example, the empty base optimization is prohibited if one of the empty 
 | 
			
		||||
 * base class is also a base type of the first non static data member: 
 | 
			
		||||
 * 
 | 
			
		||||
 * @code 
 | 
			
		||||
 * struct A { };
 | 
			
		||||
 * struct B : A { 
 | 
			
		||||
 *    int foo;
 | 
			
		||||
 * };
 | 
			
		||||
 * // thanks to empty base optimization, sizeof(B) == sizeof(int)
 | 
			
		||||
 * 
 | 
			
		||||
 * struct C : A { 
 | 
			
		||||
 *   B b;
 | 
			
		||||
 * };
 | 
			
		||||
 * 
 | 
			
		||||
 * // empty base optimization cannot be applied here because A from C and A from
 | 
			
		||||
 * // B shall have a different address. In that case, with the alignement 
 | 
			
		||||
 * // sizeof(C) == 2* sizeof(int)
 | 
			
		||||
 * @endcode
 | 
			
		||||
 * 
 | 
			
		||||
 * The solution to that problem is to templatize the empty class to makes it 
 | 
			
		||||
 * unique to the type it is applied to: 
 | 
			
		||||
 * 
 | 
			
		||||
 * @code 
 | 
			
		||||
 * template<typename T>
 | 
			
		||||
 * struct A<T> { };
 | 
			
		||||
 * struct B : A<B> { 
 | 
			
		||||
 *    int foo;
 | 
			
		||||
 * };
 | 
			
		||||
 * struct C : A<C> { 
 | 
			
		||||
 *   B b;
 | 
			
		||||
 * };
 | 
			
		||||
 * 
 | 
			
		||||
 * // empty base optimization can be applied B and C does not refer to the same 
 | 
			
		||||
 * // kind of A. sizeof(C) == sizeof(B) == sizeof(int).
 | 
			
		||||
 * @endcode
 | 
			
		||||
 */
 | 
			
		||||
template<typename T>
 | 
			
		||||
class NonCopyable { 
 | 
			
		||||
protected:
 | 
			
		||||
    /** 
 | 
			
		||||
     * Disalow construction of NonCopyable objects from outside of its hierarchy.
 | 
			
		||||
     */
 | 
			
		||||
    NonCopyable() { }
 | 
			
		||||
    /** 
 | 
			
		||||
     * Disalow destruction of NonCopyable objects from outside of its hierarchy.
 | 
			
		||||
     */
 | 
			
		||||
    ~NonCopyable() { }
 | 
			
		||||
 | 
			
		||||
private: 
 | 
			
		||||
    /**
 | 
			
		||||
     * Declare copy constructor as private, any attempt to copy construct 
 | 
			
		||||
     * a NonCopyable will fail at compile time.
 | 
			
		||||
     */
 | 
			
		||||
    NonCopyable(const NonCopyable&);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Declare copy assignement operator as private, any attempt to copy assign 
 | 
			
		||||
     * a NonCopyable will fail at compile time.
 | 
			
		||||
     */
 | 
			
		||||
    NonCopyable& operator=(const NonCopyable&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed 
 | 
			
		||||
 | 
			
		||||
#endif /* MBED_NONCOPYABLE_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +18,8 @@
 | 
			
		|||
#ifndef PLATFORM_MUTEX_H
 | 
			
		||||
#define PLATFORM_MUTEX_H
 | 
			
		||||
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
#ifdef MBED_CONF_RTOS_PRESENT
 | 
			
		||||
#include "rtos/Mutex.h"
 | 
			
		||||
typedef rtos::Mutex PlatformMutex;
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +27,7 @@ typedef rtos::Mutex PlatformMutex;
 | 
			
		|||
/** A stub mutex for when an RTOS is not present
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
*/
 | 
			
		||||
class PlatformMutex {
 | 
			
		||||
class PlatformMutex : private mbed::NonCopyable<PlatformMutex> {
 | 
			
		||||
public:
 | 
			
		||||
    PlatformMutex() {
 | 
			
		||||
        // Stub
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
#include "platform/platform.h"
 | 
			
		||||
#include "platform/FileLike.h"
 | 
			
		||||
#include "platform/FileHandle.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdarg>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +37,7 @@ extern char* mbed_gets(char *s, int size, std::FILE *_file);
 | 
			
		|||
 * @note Synchronization level: Set by subclass
 | 
			
		||||
 * @ingroup platform
 | 
			
		||||
 */
 | 
			
		||||
class Stream : public FileLike {
 | 
			
		||||
class Stream : public FileLike, private NonCopyable<Stream> {
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    Stream(const char *name=NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -80,11 +81,6 @@ protected:
 | 
			
		|||
    virtual void unlock() {
 | 
			
		||||
        // Stub
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* disallow copy constructor and assignment operators */
 | 
			
		||||
private:
 | 
			
		||||
    Stream(const Stream&);
 | 
			
		||||
    Stream & operator = (const Stream&);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace mbed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@
 | 
			
		|||
#include "rtx_lib.h"
 | 
			
		||||
#include "mbed_rtos1_types.h"
 | 
			
		||||
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
using namespace rtos;
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +49,7 @@ namespace rtos {
 | 
			
		|||
 both for the mbed OS and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
*/
 | 
			
		||||
template<typename T, uint32_t queue_sz>
 | 
			
		||||
class Mail {
 | 
			
		||||
class Mail : private mbed::NonCopyable<Mail<T, queue_sz> > {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create and Initialise Mail queue. */
 | 
			
		||||
    Mail() { };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@
 | 
			
		|||
#include "cmsis_os2.h"
 | 
			
		||||
#include "mbed_rtos1_types.h"
 | 
			
		||||
#include "mbed_rtos_storage.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
/** \addtogroup rtos */
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +43,7 @@ namespace rtos {
 | 
			
		|||
 both for the mbed OS and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
*/
 | 
			
		||||
template<typename T, uint32_t pool_sz>
 | 
			
		||||
class MemoryPool {
 | 
			
		||||
class MemoryPool : private mbed::NonCopyable<MemoryPool<T, pool_sz> > {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create and Initialize a memory pool. */
 | 
			
		||||
    MemoryPool() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,8 @@
 | 
			
		|||
#include "mbed_rtos1_types.h"
 | 
			
		||||
#include "mbed_rtos_storage.h"
 | 
			
		||||
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
/** \addtogroup rtos */
 | 
			
		||||
/** @{*/
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +40,7 @@ namespace rtos {
 | 
			
		|||
 Memory considerations: The mutex control structures will be created on current thread's stack, both for the mbed OS
 | 
			
		||||
 and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
*/
 | 
			
		||||
class Mutex {
 | 
			
		||||
class Mutex : private mbed::NonCopyable<Mutex> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create and Initialize a Mutex object */
 | 
			
		||||
    Mutex();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@
 | 
			
		|||
#include "cmsis_os2.h"
 | 
			
		||||
#include "mbed_rtos_storage.h"
 | 
			
		||||
#include "platform/mbed_error.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include "mbed_rtos1_types.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +46,7 @@ namespace rtos {
 | 
			
		|||
 and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
*/
 | 
			
		||||
template<typename T, uint32_t queue_sz>
 | 
			
		||||
class Queue {
 | 
			
		||||
class Queue : private mbed::NonCopyable<Queue<T, queue_sz> > {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create and initialize a message Queue. */
 | 
			
		||||
    Queue() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
#include "cmsis_os2.h"
 | 
			
		||||
#include "rtx_lib.h"
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "mbed_rtos1_types.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +80,7 @@ namespace rtos {
 | 
			
		|||
 Memory considerations: The timer control structures will be created on current thread's stack, both for the mbed OS
 | 
			
		||||
 and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
*/
 | 
			
		||||
class RtosTimer {
 | 
			
		||||
class RtosTimer : private mbed::NonCopyable<RtosTimer> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create timer.
 | 
			
		||||
      @param   func      function to be executed by this timer.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
#include "cmsis_os2.h"
 | 
			
		||||
#include "mbed_rtos1_types.h"
 | 
			
		||||
#include "mbed_rtos_storage.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
 | 
			
		||||
namespace rtos {
 | 
			
		||||
/** \addtogroup rtos */
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ namespace rtos {
 | 
			
		|||
 * Memory considerations: The semaphore control structures will be created on current thread's stack, both for the mbed OS
 | 
			
		||||
 * and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
 */
 | 
			
		||||
class Semaphore {
 | 
			
		||||
class Semaphore : private mbed::NonCopyable<Semaphore> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create and Initialize a Semaphore object used for managing resources.
 | 
			
		||||
      @param count      number of available resources; maximum index value is (count-1). (default: 0).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,7 @@
 | 
			
		|||
#include "mbed_rtx_conf.h"
 | 
			
		||||
#include "platform/Callback.h"
 | 
			
		||||
#include "platform/mbed_toolchain.h"
 | 
			
		||||
#include "platform/NonCopyable.h"
 | 
			
		||||
#include "rtos/Semaphore.h"
 | 
			
		||||
#include "rtos/Mutex.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +70,7 @@ namespace rtos {
 | 
			
		|||
 * and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).
 | 
			
		||||
 * Additionally the stack memory for this thread will be allocated on the heap, if it wasn't supplied to the constructor.
 | 
			
		||||
 */
 | 
			
		||||
class Thread {
 | 
			
		||||
class Thread : private mbed::NonCopyable<Thread> {
 | 
			
		||||
public:
 | 
			
		||||
    /** Allocate a new thread without starting execution
 | 
			
		||||
      @param   priority       initial priority of the thread function. (default: osPriorityNormal).
 | 
			
		||||
| 
						 | 
				
			
			@ -348,10 +349,6 @@ public:
 | 
			
		|||
    virtual ~Thread();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /* disallow copy constructor and assignment operators */
 | 
			
		||||
    Thread(const Thread&);
 | 
			
		||||
    Thread& operator=(const Thread&);
 | 
			
		||||
 | 
			
		||||
    // Required to share definitions without
 | 
			
		||||
    // delegated constructors
 | 
			
		||||
    void constructor(osPriority priority=osPriorityNormal,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue