mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Revision:
187:0387e8f68319
Parent:
181:57724642e740
Child:
189:f392fc9709a3
--- a/platform/CThunk.h	Fri Jun 22 16:45:37 2018 +0100
+++ b/platform/CThunk.h	Thu Sep 06 13:40:20 2018 +0100
@@ -84,165 +84,163 @@
  * @note Synchronization level: Not protected
  */
 template<class T>
-class CThunk
-{
-    public:
-        typedef void (T::*CCallbackSimple)(void);
-        typedef void (T::*CCallback)(void* context);
+class CThunk {
+public:
+    typedef void (T::*CCallbackSimple)(void);
+    typedef void (T::*CCallback)(void *context);
+
+    inline CThunk(T *instance)
+    {
+        init(instance, NULL, NULL);
+    }
 
-        inline CThunk(T *instance)
-        {
-            init(instance, NULL, NULL);
-        }
+    inline CThunk(T *instance, CCallback callback)
+    {
+        init(instance, callback, NULL);
+    }
 
-        inline CThunk(T *instance, CCallback callback)
-        {
-            init(instance, callback, NULL);
-        }
+    ~CThunk()
+    {
 
-        ~CThunk() {
-
-        }
+    }
 
-        inline CThunk(T *instance, CCallbackSimple callback)
-        {
-            init(instance, (CCallback)callback, NULL);
-        }
+    inline CThunk(T *instance, CCallbackSimple callback)
+    {
+        init(instance, (CCallback)callback, NULL);
+    }
 
-        inline CThunk(T &instance, CCallback callback)
-        {
-            init(instance, callback, NULL);
-        }
+    inline CThunk(T &instance, CCallback callback)
+    {
+        init(instance, callback, NULL);
+    }
 
-        inline CThunk(T &instance, CCallbackSimple callback)
-        {
-            init(instance, (CCallback)callback, NULL);
-        }
+    inline CThunk(T &instance, CCallbackSimple callback)
+    {
+        init(instance, (CCallback)callback, NULL);
+    }
 
-        inline CThunk(T &instance, CCallback callback, void* context)
-        {
-            init(instance, callback, context);
-        }
+    inline CThunk(T &instance, CCallback callback, void *context)
+    {
+        init(instance, callback, context);
+    }
 
-        inline void callback(CCallback callback)
-        {
-            m_callback = callback;
-        }
+    inline void callback(CCallback callback)
+    {
+        m_callback = callback;
+    }
+
+    inline void callback(CCallbackSimple callback)
+    {
+        m_callback = (CCallback)callback;
+    }
 
-        inline void callback(CCallbackSimple callback)
-        {
-            m_callback = (CCallback)callback;
-        }
+    inline void context(void *context)
+    {
+        m_thunk.context = (uint32_t)context;
+    }
 
-        inline void context(void* context)
-        {
-            m_thunk.context = (uint32_t)context;
-        }
+    inline void context(uint32_t context)
+    {
+        m_thunk.context = context;
+    }
 
-        inline void context(uint32_t context)
-        {
-            m_thunk.context = context;
-        }
-        
-        inline uint32_t entry(void)
-        {
-            return (((uint32_t)&m_thunk)|CTHUNK_ADDRESS);
-        }
+    inline uint32_t entry(void)
+    {
+        return (((uint32_t)&m_thunk) | CTHUNK_ADDRESS);
+    }
 
-        /* get thunk entry point for connecting rhunk to an IRQ table */
-        inline operator CThunkEntry(void)
-        {
-            return (CThunkEntry)entry();
-        }
+    /* get thunk entry point for connecting rhunk to an IRQ table */
+    inline operator CThunkEntry(void)
+    {
+        return (CThunkEntry)entry();
+    }
 
-        /* get thunk entry point for connecting rhunk to an IRQ table */
-        inline operator uint32_t(void)
-        {
-            return entry();
-        }
+    /* get thunk entry point for connecting rhunk to an IRQ table */
+    inline operator uint32_t(void)
+    {
+        return entry();
+    }
 
-        /* simple test function */
-        inline void call(void)
-        {
-            (((CThunkEntry)(entry()))());
-        }
+    /* simple test function */
+    inline void call(void)
+    {
+        (((CThunkEntry)(entry()))());
+    }
 
-    private:
-        T* m_instance;
-        volatile CCallback m_callback;
+private:
+    T *m_instance;
+    volatile CCallback m_callback;
 
 // TODO: this needs proper fix, to refactor toolchain header file and all its use
 // PACKED there is not defined properly for IAR
 #if defined (__ICCARM__)
-        typedef __packed struct
-        {
-            CTHUNK_VARIABLES;
-            volatile uint32_t instance;
-            volatile uint32_t context;
-            volatile uint32_t callback;
-            volatile uint32_t trampoline;
-        }  CThunkTrampoline;
+    typedef __packed struct {
+        CTHUNK_VARIABLES;
+        volatile uint32_t instance;
+        volatile uint32_t context;
+        volatile uint32_t callback;
+        volatile uint32_t trampoline;
+    }  CThunkTrampoline;
 #else
-        typedef struct
-        {
-            CTHUNK_VARIABLES;
-            volatile uint32_t instance;
-            volatile uint32_t context;
-            volatile uint32_t callback;
-            volatile uint32_t trampoline;
-        } __attribute__((__packed__)) CThunkTrampoline;
+    typedef struct {
+        CTHUNK_VARIABLES;
+        volatile uint32_t instance;
+        volatile uint32_t context;
+        volatile uint32_t callback;
+        volatile uint32_t trampoline;
+    } __attribute__((__packed__)) CThunkTrampoline;
 #endif
 
-        static void trampoline(T* instance, void* context, CCallback* callback)
-        {
-            if(instance && *callback) {
-                (static_cast<T*>(instance)->**callback)(context);
-            }
+    static void trampoline(T *instance, void *context, CCallback *callback)
+    {
+        if (instance && *callback) {
+            (static_cast<T *>(instance)->**callback)(context);
         }
+    }
 
-        volatile CThunkTrampoline m_thunk;
+    volatile CThunkTrampoline m_thunk;
 
-        inline void init(T *instance, CCallback callback, void* context)
-        {
-            /* remember callback - need to add this level of redirection
-               as pointer size for member functions differs between platforms */
-            m_callback = callback;
+    inline void init(T *instance, CCallback callback, void *context)
+    {
+        /* remember callback - need to add this level of redirection
+           as pointer size for member functions differs between platforms */
+        m_callback = callback;
 
-            /* populate thunking trampoline */
-            CTHUNK_ASSIGMENT;
-            m_thunk.context = (uint32_t)context;
-            m_thunk.instance = (uint32_t)instance;
-            m_thunk.callback = (uint32_t)&m_callback;
-            m_thunk.trampoline = (uint32_t)&trampoline;
+        /* populate thunking trampoline */
+        CTHUNK_ASSIGMENT;
+        m_thunk.context = (uint32_t)context;
+        m_thunk.instance = (uint32_t)instance;
+        m_thunk.callback = (uint32_t)&m_callback;
+        m_thunk.trampoline = (uint32_t)&trampoline;
 
 #if defined(__CORTEX_A9)
-            /* Data cache clean */
-            /* Cache control */
-            {
-                uint32_t start_addr = (uint32_t)&m_thunk & 0xFFFFFFE0;
-                uint32_t end_addr   = (uint32_t)&m_thunk + sizeof(m_thunk);
-                uint32_t addr;
+        /* Data cache clean */
+        /* Cache control */
+        {
+            uint32_t start_addr = (uint32_t)&m_thunk & 0xFFFFFFE0;
+            uint32_t end_addr   = (uint32_t)&m_thunk + sizeof(m_thunk);
+            uint32_t addr;
 
-                /* Data cache clean and invalid */
-                for (addr = start_addr; addr < end_addr; addr += 0x20) {
-                    L1C_CleanInvalidateDCacheMVA((void *)addr);
-                }
-                /* Instruction cache invalid */
-                L1C_InvalidateICacheAll();
-                MMU_InvalidateTLB();
-                L1C_InvalidateBTAC();
+            /* Data cache clean and invalid */
+            for (addr = start_addr; addr < end_addr; addr += 0x20) {
+                L1C_CleanInvalidateDCacheMVA((void *)addr);
             }
+            /* Instruction cache invalid */
+            L1C_InvalidateICacheAll();
+            MMU_InvalidateTLB();
+            L1C_InvalidateBTAC();
+        }
 #endif
 #if defined(__CORTEX_M7)
-            /* Data cache clean and invalid */
-            SCB_CleanInvalidateDCache();
+        /* Data cache clean and invalid */
+        SCB_CleanInvalidateDCache();
 
-            /* Instruction cache invalid */
-            SCB_InvalidateICache();
+        /* Instruction cache invalid */
+        SCB_InvalidateICache();
 #endif
-            __ISB();
-            __DSB();
-        }
+        __ISB();
+        __DSB();
+    }
 };
 
 /**@}*/