+++ /dev/null
-/*--------------------------------------------------------------------\r
- * TITLE: Plasma Dynamic Link Library\r
- * AUTHOR: Steve Rhoads (rhoadss@yahoo.com)\r
- * DATE CREATED: 4/4/08\r
- * FILENAME: dll.h\r
- * PROJECT: Plasma CPU core\r
- * COPYRIGHT: Software placed into the public domain by the author.\r
- * Software 'as is' without warranty. Author liable for nothing.\r
- * DESCRIPTION:\r
- * Dynamic Link Library \r
- *--------------------------------------------------------------------*/\r
-#ifndef __DLL_H__\r
-#define __DLL_H__\r
-\r
-#define INCLUDE_FILESYS\r
-#include "rtos.h"\r
-#include "tcpip.h"\r
-\r
-typedef void *(*DllFunc)();\r
-\r
-// Included by Plasma Kernel to create array of function pointers\r
-#ifdef DLL_SETUP\r
-\r
-void *DllDummy(void) { printf("Dummy"); return NULL; }\r
-\r
-const DllFunc DllFuncList[] = {\r
- (DllFunc)strcpy,\r
- (DllFunc)strncpy,\r
- (DllFunc)strcat,\r
- (DllFunc)strncat,\r
- (DllFunc)strcmp,\r
- (DllFunc)strncmp,\r
- (DllFunc)strstr,\r
- (DllFunc)strlen,\r
- (DllFunc)memcpy,\r
- (DllFunc)memmove,\r
- (DllFunc)memcmp,\r
- (DllFunc)memset,\r
- (DllFunc)abs,\r
- (DllFunc)rand,\r
- (DllFunc)srand,\r
- (DllFunc)strtol,\r
- (DllFunc)atoi,\r
- (DllFunc)itoa,\r
- (DllFunc)sprintf,\r
- (DllFunc)sscanf,\r
-#ifdef INCLUDE_DUMP\r
- (DllFunc)dump,\r
-#else //INCLUDE_DUMP\r
- DllDummy,\r
-#endif //INCLUDE_DUMP\r
-#ifdef INCLUDE_QSORT\r
- (DllFunc)qsort,\r
- (DllFunc)bsearch,\r
-#else //INCLUDE_QSORT\r
- DllDummy,\r
- DllDummy,\r
-#endif //INCLUDE_QSORT\r
-#ifdef INCLUDE_TIMELIB\r
- (DllFunc)mktime,\r
- (DllFunc)gmtime_r,\r
- (DllFunc)gmtimeDst,\r
- (DllFunc)gmtimeDstSet,\r
-#else //INCLUDE_TIMELIB\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
-#endif //INCLUDE_TIMELIB\r
- (DllFunc)OS_AsmInterruptEnable,\r
- (DllFunc)OS_HeapCreate,\r
- (DllFunc)OS_HeapDestroy,\r
- (DllFunc)OS_HeapMalloc,\r
- (DllFunc)OS_HeapFree,\r
- (DllFunc)OS_HeapAlternate,\r
- (DllFunc)OS_HeapRegister,\r
- (DllFunc)OS_ThreadCreate,\r
- (DllFunc)OS_ThreadExit,\r
- (DllFunc)OS_ThreadSelf,\r
- (DllFunc)OS_ThreadSleep,\r
- (DllFunc)OS_ThreadTime,\r
- (DllFunc)OS_ThreadInfoSet,\r
- (DllFunc)OS_ThreadInfoGet,\r
- (DllFunc)OS_ThreadPriorityGet,\r
- (DllFunc)OS_ThreadPrioritySet,\r
- (DllFunc)OS_ThreadProcessId,\r
- (DllFunc)OS_ThreadCpuLock,\r
- (DllFunc)OS_SemaphoreCreate,\r
- (DllFunc)OS_SemaphoreDelete,\r
- (DllFunc)OS_SemaphorePend,\r
- (DllFunc)OS_SemaphorePost,\r
- (DllFunc)OS_MutexCreate,\r
- (DllFunc)OS_MutexDelete,\r
- (DllFunc)OS_MutexPend,\r
- (DllFunc)OS_MutexPost,\r
- (DllFunc)OS_MQueueCreate,\r
- (DllFunc)OS_MQueueDelete,\r
- (DllFunc)OS_MQueueSend,\r
- (DllFunc)OS_MQueueGet,\r
- (DllFunc)OS_Job,\r
- (DllFunc)OS_TimerCreate,\r
- (DllFunc)OS_TimerDelete,\r
- (DllFunc)OS_TimerCallback,\r
- (DllFunc)OS_TimerStart,\r
- (DllFunc)OS_TimerStop,\r
- (DllFunc)OS_InterruptRegister,\r
- (DllFunc)OS_InterruptStatus,\r
- (DllFunc)OS_InterruptMaskSet,\r
- (DllFunc)OS_InterruptMaskClear,\r
- (DllFunc)UartPrintf,\r
- (DllFunc)UartPrintfPoll,\r
- (DllFunc)UartPrintfCritical,\r
- (DllFunc)UartScanf,\r
- (DllFunc)puts,\r
- (DllFunc)getch,\r
- (DllFunc)kbhit,\r
- (DllFunc)Led,\r
- (DllFunc)FP_Sqrt,\r
- (DllFunc)FP_Cos,\r
- (DllFunc)FP_Sin,\r
- (DllFunc)FP_Atan,\r
- (DllFunc)FP_Atan2,\r
- (DllFunc)FP_Exp,\r
- (DllFunc)FP_Log,\r
- (DllFunc)FP_Pow,\r
-#ifdef INCLUDE_FILESYS\r
- (DllFunc)OS_fopen,\r
- (DllFunc)OS_fclose,\r
- (DllFunc)OS_fread,\r
- (DllFunc)OS_fwrite,\r
- (DllFunc)OS_fseek,\r
- (DllFunc)OS_fmkdir,\r
- (DllFunc)OS_fdir,\r
- (DllFunc)OS_fdelete,\r
-#else //INCLUDE_FILESYS\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
-#endif //INCLUDE_FILESYS\r
-#ifndef WIN32\r
- (DllFunc)FlashRead,\r
- (DllFunc)FlashWrite,\r
- (DllFunc)FlashErase,\r
-#else //WIN32\r
- DllDummy,\r
- DllDummy,\r
- DllDummy,\r
-#endif //WIN32\r
- (DllFunc)IPOpen,\r
- (DllFunc)IPWriteFlush,\r
- (DllFunc)IPWrite,\r
- (DllFunc)IPRead,\r
- (DllFunc)IPClose,\r
- (DllFunc)IPPrintf,\r
- (DllFunc)IPResolve,\r
- (DllFunc)IPAddressSelf,\r
- (DllFunc)IPNameValue\r
-};\r
-\r
-#endif //DLL_SETUP\r
-\r
-// Included by DLL to call OS functions via array of function pointers\r
-#if defined(DLL_CALL) || !defined(DLL_SETUP)\r
-\r
-enum {\r
- ENUM_strcpy,\r
- ENUM_strncpy,\r
- ENUM_strcat,\r
- ENUM_strncat,\r
- ENUM_strcmp,\r
- ENUM_strncmp,\r
- ENUM_strstr,\r
- ENUM_strlen,\r
- ENUM_memcpy,\r
- ENUM_memmove,\r
- ENUM_memcmp,\r
- ENUM_memset,\r
- ENUM_abs,\r
- ENUM_rand,\r
- ENUM_srand,\r
- ENUM_strtol,\r
- ENUM_atoi,\r
- ENUM_itoa,\r
- ENUM_sprintf,\r
- ENUM_sscanf,\r
- ENUM_dump,\r
- ENUM_qsort,\r
- ENUM_bsearch,\r
- ENUM_mktime,\r
- ENUM_gmtime_r,\r
- ENUM_gmtimeDst,\r
- ENUM_gmtimeDstSet,\r
- ENUM_OS_AsmInterruptEnable,\r
- ENUM_OS_HeapCreate,\r
- ENUM_OS_HeapDestroy,\r
- ENUM_OS_HeapMalloc,\r
- ENUM_OS_HeapFree,\r
- ENUM_OS_HeapAlternate,\r
- ENUM_OS_HeapRegister,\r
- ENUM_OS_ThreadCreate,\r
- ENUM_OS_ThreadExit,\r
- ENUM_OS_ThreadSelf,\r
- ENUM_OS_ThreadSleep,\r
- ENUM_OS_ThreadTime,\r
- ENUM_OS_ThreadInfoSet,\r
- ENUM_OS_ThreadInfoGet,\r
- ENUM_OS_ThreadPriorityGet,\r
- ENUM_OS_ThreadPrioritySet,\r
- ENUM_OS_ThreadProcessId,\r
- ENUM_OS_ThreadCpuLock,\r
- ENUM_OS_SemaphoreCreate,\r
- ENUM_OS_SemaphoreDelete,\r
- ENUM_OS_SemaphorePend,\r
- ENUM_OS_SemaphorePost,\r
- ENUM_OS_MutexCreate,\r
- ENUM_OS_MutexDelete,\r
- ENUM_OS_MutexPend,\r
- ENUM_OS_MutexPost,\r
- ENUM_OS_MQueueCreate,\r
- ENUM_OS_MQueueDelete,\r
- ENUM_OS_MQueueSend,\r
- ENUM_OS_MQueueGet,\r
- ENUM_OS_Job,\r
- ENUM_OS_TimerCreate,\r
- ENUM_OS_TimerDelete,\r
- ENUM_OS_TimerCallback,\r
- ENUM_OS_TimerStart,\r
- ENUM_OS_TimerStop,\r
- ENUM_OS_InterruptRegister,\r
- ENUM_OS_InterruptStatus,\r
- ENUM_OS_InterruptMaskSet,\r
- ENUM_OS_InterruptMaskClear,\r
- ENUM_UartPrintf,\r
- ENUM_UartPrintfPoll,\r
- ENUM_UartPrintfCritical,\r
- ENUM_UartScanf,\r
- ENUM_puts,\r
- ENUM_getch,\r
- ENUM_kbhit,\r
- ENUM_Led,\r
- ENUM_FP_Sqrt,\r
- ENUM_FP_Cos,\r
- ENUM_FP_Sin,\r
- ENUM_FP_Atan,\r
- ENUM_FP_Atan2,\r
- ENUM_FP_Exp,\r
- ENUM_FP_Log,\r
- ENUM_FP_Pow,\r
- ENUM_OS_fopen,\r
- ENUM_OS_fclose,\r
- ENUM_OS_fread,\r
- ENUM_OS_fwrite,\r
- ENUM_OS_fseek,\r
- ENUM_OS_fmkdir,\r
- ENUM_OS_fdir,\r
- ENUM_OS_fdelete,\r
- ENUM_FlashRead,\r
- ENUM_FlashWrite,\r
- ENUM_FlashErase,\r
- ENUM_IPOpen,\r
- ENUM_IPWriteFlush,\r
- ENUM_IPWrite,\r
- ENUM_IPRead,\r
- ENUM_IPClose,\r
- ENUM_IPPrintf,\r
- ENUM_IPResolve,\r
- ENUM_IPAddressSelf,\r
- ENUM_IPNameValue\r
-};\r
-\r
-extern const DllFunc *DllF;\r
-\r
-#undef strcpy\r
-#undef strcat\r
-#undef strncat\r
-#undef strcmp\r
-#undef strlen\r
-#undef memcpy\r
-#undef memcmp\r
-#undef memset\r
-#undef abs\r
-#undef atoi\r
-#undef puts\r
-#undef getch\r
-#undef kbhit\r
-\r
-#define strcpy DllF[ENUM_strcpy]\r
-#define strncpy DllF[ENUM_strncpy]\r
-#define strcat DllF[ENUM_strcat]\r
-#define strncat DllF[ENUM_strncat]\r
-#define strcmp (int)DllF[ENUM_strcmp]\r
-#define strncmp (int)DllF[ENUM_strncmp]\r
-#define strstr DllF[ENUM_strstr]\r
-#define strlen (int)DllF[ENUM_strlen]\r
-#define memcpy DllF[ENUM_memcpy]\r
-#define memmove DllF[ENUM_memmove]\r
-#define memcmp (int)DllF[ENUM_memcmp]\r
-#define memset DllF[ENUM_memset]\r
-#define abs (int)DllF[ENUM_abs]\r
-#define rand (int)DllF[ENUM_rand]\r
-#define srand DllF[ENUM_srand]\r
-#define strtol (int)DllF[ENUM_strtol]\r
-#define atoi (int)DllF[ENUM_atoi]\r
-#define itoa DllF[ENUM_itoa]\r
-#define sprintf DllF[ENUM_sprintf]\r
-#define sscanf DllF[ENUM_sscanf]\r
-#define dump DllF[ENUM_dump]\r
-#define qsort DllF[ENUM_qsort]\r
-#define bsearch DllF[ENUM_bsearch]\r
-#define mktime DllF[ENUM_mktime]\r
-#define gmtime_r DllF[ENUM_gmtime_r]\r
-#define gmtimeDst DllF[ENUM_gmtimeDst]\r
-#define gmtimeDstSet DllF[ENUM_gmtimeDstSet]\r
-#define OS_AsmInterruptEnable (int)DllF[ENUM_OS_AsmInterruptEnable]\r
-#define OS_HeapCreate DllF[ENUM_OS_HeapCreate]\r
-#define OS_HeapDestroy DllF[ENUM_OS_HeapDestroy]\r
-#define OS_HeapMalloc DllF[ENUM_OS_HeapMalloc]\r
-#define OS_HeapFree DllF[ENUM_OS_HeapFree]\r
-#define OS_HeapAlternate DllF[ENUM_OS_HeapAlternate]\r
-#define OS_HeapRegister DllF[ENUM_OS_HeapRegister]\r
-#define OS_ThreadCreate DllF[ENUM_OS_ThreadCreate]\r
-#define OS_ThreadExit DllF[ENUM_OS_ThreadExit]\r
-#define OS_ThreadSelf DllF[ENUM_OS_ThreadSelf]\r
-#define OS_ThreadSleep DllF[ENUM_OS_ThreadSleep]\r
-#define OS_ThreadTime DllF[ENUM_OS_ThreadTime]\r
-#define OS_ThreadInfoSet DllF[ENUM_OS_ThreadInfoSet]\r
-#define OS_ThreadInfoGet DllF[ENUM_OS_ThreadInfoGet]\r
-#define OS_ThreadPriorityGet (int)DllF[ENUM_OS_ThreadPriorityGet]\r
-#define OS_ThreadPrioritySet DllF[ENUM_OS_ThreadPrioritySet]\r
-#define OS_ThreadProcessId DllF[ENUM_OS_ThreadProcessId]\r
-#define OS_ThreadCpuLock DllF[ENUM_OS_ThreadCpuLock]\r
-#define OS_SemaphoreCreate DllF[ENUM_OS_SemaphoreCreate]\r
-#define OS_SemaphoreDelete DllF[ENUM_OS_SemaphoreDelete]\r
-#define OS_SemaphorePend (int)DllF[ENUM_OS_SemaphorePend]\r
-#define OS_SemaphorePost DllF[ENUM_OS_SemaphorePost]\r
-#define OS_MutexCreate DllF[ENUM_OS_MutexCreate]\r
-#define OS_MutexDelete DllF[ENUM_OS_MutexDelete]\r
-#define OS_MutexPend (int)DllF[ENUM_OS_MutexPend]\r
-#define OS_MutexPost DllF[ENUM_OS_MutexPost]\r
-#define OS_MQueueCreate DllF[ENUM_OS_MQueueCreate]\r
-#define OS_MQueueDelete DllF[ENUM_OS_MQueueDelete]\r
-#define OS_MQueueSend DllF[ENUM_OS_MQueueSend]\r
-#define OS_MQueueGet (int)DllF[ENUM_OS_MQueueGet]\r
-#define OS_Job DllF[ENUM_OS_Job]\r
-#define OS_TimerCreate DllF[ENUM_OS_TimerCreate]\r
-#define OS_TimerDelete DllF[ENUM_OS_TimerDelete]\r
-#define OS_TimerCallback DllF[ENUM_OS_TimerCallback]\r
-#define OS_TimerStart DllF[ENUM_OS_TimerStart]\r
-#define OS_TimerStop DllF[ENUM_OS_TimerStop]\r
-#define OS_InterruptRegister DllF[ENUM_OS_InterruptRegister]\r
-#define OS_InterruptStatus (int)DllF[ENUM_OS_InterruptStatus]\r
-#define OS_InterruptMaskSet DllF[ENUM_OS_InterruptMaskSet]\r
-#define OS_InterruptMaskClear DllF[ENUM_OS_InterruptMaskClear]\r
-#define UartPrintf DllF[ENUM_UartPrintf]\r
-#define UartPrintfPoll DllF[ENUM_UartPrintfPoll]\r
-#define UartPrintfCritical DllF[ENUM_UartPrintfCritical]\r
-#define UartScanf DllF[ENUM_UartScanf]\r
-#define puts DllF[ENUM_puts]\r
-#define getch (int)DllF[ENUM_getch]\r
-#define kbhit (int)DllF[ENUM_kbhit]\r
-#define Led DllF[ENUM_Led]\r
-#define FP_Sqrt (float)(int)DllF[ENUM_FP_Sqrt]\r
-#define FP_Cos (float)(int)DllF[ENUM_FP_Cos]\r
-#define FP_Sin (float)(int)DllF[ENUM_FP_Sin]\r
-#define FP_Atan (float)(int)DllF[ENUM_FP_Atan]\r
-#define FP_Atan2 (float)(int)DllF[ENUM_FP_Atan2]\r
-#define FP_Exp (float)(int)DllF[ENUM_FP_Exp]\r
-#define FP_Log (float)(int)DllF[ENUM_FP_Log]\r
-#define FP_Pow (float)(int)DllF[ENUM_FP_Pow]\r
-#define OS_fopen DllF[ENUM_OS_fopen]\r
-#define OS_fclose DllF[ENUM_OS_fclose]\r
-#define OS_fread (int)DllF[ENUM_OS_fread]\r
-#define OS_fwrite DllF[ENUM_OS_fwrite]\r
-#define OS_fseek DllF[ENUM_OS_fseek]\r
-#define OS_fmkdir DllF[ENUM_OS_fmkdir]\r
-#define OS_fdir DllF[ENUM_OS_fdir]\r
-#define OS_fdelete DllF[ENUM_OS_fdelete]\r
-#define FlashRead DllF[ENUM_FlashRead]\r
-#define FlashWrite DllF[ENUM_FlashWrite]\r
-#define FlashErase DllF[ENUM_FlashErase]\r
-#define IPOpen DllF[ENUM_IPOpen]\r
-#define IPWriteFlush DllF[ENUM_IPWriteFlush]\r
-#define IPWrite (int)DllF[ENUM_IPWrite]\r
-#define IPRead (int)DllF[ENUM_IPRead]\r
-#define IPClose DllF[ENUM_IPClose]\r
-#define IPPrintf DllF[ENUM_IPPrintf]\r
-#define IPResolve DllF[ENUM_IPResolve]\r
-#define IPAddressSelf (int)DllF[ENUM_IPAddressSelf]\r
-#define IPNameValue DllF[ENUM_IPNameValue]\r
-\r
-#endif //DLL_CALL\r
-\r
-\r
-#if defined(DLL_SETUP) && defined(DLL_CALL)\r
-const DllFunc *DllF = DllFuncList;\r
-#elif !defined(DLL_SETUP) && !defined(DLL_CALL) && !defined(DLL_ENTRY)\r
-#define DLL_ENTRY 1\r
-#endif //DLL_SETUP && DLL_CALL\r
-\r
-\r
-// Included by DLL to initialize the DLL\r
-#if defined(DLL_ENTRY) && !defined(NO_DLL_ENTRY)\r
-const DllFunc *DllF; //array of function pointers\r
-extern void *__bss_start;\r
-extern void *_end;\r
-void Start(IPSocket *socket, char *argv[]);\r
-\r
-//Must be first function in file\r
-void *__start(DllFunc *DllFuncList)\r
-{\r
- int *bss;\r
- if(DllFuncList == NULL)\r
- return (void*)__start; //address where DLL should be loaded\r
- for(bss = (int*)&__bss_start; bss < (int*)&_end; ++bss)\r
- *bss = 0;\r
- DllF = DllFuncList;\r
- return (void*)Start;\r
-}\r
-#endif //DLL_ENTRY\r
-\r
-\r
-#ifdef DLL_STRINGS\r
-const char * const DllStrings[] = {\r
- "strcpy",\r
- "strncpy",\r
- "strcat",\r
- "strncat",\r
- "strcmp",\r
- "strncmp",\r
- "strstr",\r
- "strlen",\r
- "memcpy",\r
- "memmove",\r
- "memcmp",\r
- "memset",\r
- "abs",\r
- "rand",\r
- "srand",\r
- "strtol",\r
- "atoi",\r
- "itoa",\r
- "sprintf",\r
- "sscanf",\r
- "dump",\r
- "qsort",\r
- "bsearch",\r
- "mktime",\r
- "gmtime_r",\r
- "gmtimeDst",\r
- "gmtimeDstSet",\r
- "OS_AsmInterruptEnable",\r
- "OS_HeapCreate",\r
- "OS_HeapDestroy",\r
- "OS_HeapMalloc",\r
- "OS_HeapFree",\r
- "OS_HeapAlternate",\r
- "OS_HeapRegister",\r
- "OS_ThreadCreate",\r
- "OS_ThreadExit",\r
- "OS_ThreadSelf",\r
- "OS_ThreadSleep",\r
- "OS_ThreadTime",\r
- "OS_ThreadInfoSet",\r
- "OS_ThreadInfoGet",\r
- "OS_ThreadPriorityGet",\r
- "OS_ThreadPrioritySet",\r
- "OS_ThreadProcessId",\r
- "OS_ThreadCpuLock",\r
- "OS_SemaphoreCreate",\r
- "OS_SemaphoreDelete",\r
- "OS_SemaphorePend",\r
- "OS_SemaphorePost",\r
- "OS_MutexCreate",\r
- "OS_MutexDelete",\r
- "OS_MutexPend",\r
- "OS_MutexPost",\r
- "OS_MQueueCreate",\r
- "OS_MQueueDelete",\r
- "OS_MQueueSend",\r
- "OS_MQueueGet",\r
- "OS_Job",\r
- "OS_TimerCreate",\r
- "OS_TimerDelete",\r
- "OS_TimerCallback",\r
- "OS_TimerStart",\r
- "OS_TimerStop",\r
- "OS_InterruptRegister",\r
- "OS_InterruptStatus",\r
- "OS_InterruptMaskSet",\r
- "OS_InterruptMaskClear",\r
- "printf", //"UartPrintf",\r
- "UartPrintfPoll",\r
- "UartPrintfCritical",\r
- "scanf", //"UartScanf",\r
- "puts",\r
- "getch",\r
- "kbhit",\r
- "Led",\r
- "FP_Sqrt",\r
- "FP_Cos",\r
- "FP_Sin",\r
- "FP_Atan",\r
- "FP_Atan2",\r
- "FP_Exp",\r
- "FP_Log",\r
- "FP_Pow",\r
- "OS_fopen",\r
- "OS_fclose",\r
- "OS_fread",\r
- "OS_fwrite",\r
- "OS_fseek",\r
- "OS_fmkdir",\r
- "OS_fdir",\r
- "OS_fdelete",\r
- "FlashRead",\r
- "FlashWrite",\r
- "FlashErase",\r
- "IPOpen",\r
- "IPWriteFlush",\r
- "IPWrite",\r
- "IPRead",\r
- "IPClose",\r
- "IPPrintf",\r
- "IPResolve",\r
- "IPAddressSelf",\r
- "IPNameValue",\r
- NULL\r
-};\r
-#endif //DLL_STRINGS\r
-\r
-#endif //__DLL_H__\r
-\r