#ifndef SRC_ETHERLIB_OPTIONS #define SRC_ETHERLIB_OPTIONS #ifndef INC_ETHERLIB_OPTIONS #define INC_ETHERLIB_OPTIONS #include #include // TODO: maybe a rename would be great #define SNPRINTF(str,n,fmt, ...) embfmt(str,n,fmt,__VA_ARGS__) #define ETHLIB_MEMORY_POOL_TOTAL_SIZE (2 * 16384) #define ETHLIB_MEMORY_POOL_ATTRIBUTES section(".ETHLibPool") #define ETHLIB_ARPCACHE_SIZE (24) #define ETHLIB_ARP_RETRY_COUNT (3) #define ETHLIB_ARP_TIMEOUT_MS (2000) #define ETHLIB_TMR_SCHED_TABLE_SIZE (20) #define ETHLIB_DEF_MQ_SIZE (32) #define ETHLIB_DEF_TCP_QUEUE_SIZE (4) #define ETHLIB_DEF_TCP_WINDOW_SIZE (2000) #define ETHLIB_CBD_TABLE_SIZE (16) #define ETHLIB_DEF_FIFO_SIZE (2000) // ----------------------------------------- #ifdef CMSIS_OS2 #include #include typedef osThreadId_t ETHLIB_OS_THREAD_TYPE; typedef void ThreadReturnType; typedef void * ThreadParamType; #define ETHLIB_OS_THREAD_DEFINE(fn,name,prio,stk,param) osThreadDef(name,(fn),(prio),(0),(stk)); ETHLIB_OS_THREAD_TYPE ETHLIB_OS_THREAD_CREATE(osThreadFunc_t fn, const char * name, void * param, int priority, uint32_t stkSize); #define ETHLIB_OS_THREAD_TERMINATE(thread) osThreadTerminate(thread) typedef osSemaphoreId_t ETHLIB_OS_SEM_TYPE; //#define ETHLIB_OS_SEM_RES_CNT (1) #define ETHLIB_OS_SEM_CREATE(N) osSemaphoreNew(N, 0, NULL); #define ETHLIB_OS_SEM_DESTROY(sem) osSemaphoreDelete((sem)) #define ETHLIB_OS_SEM_WAIT(sem) osSemaphoreAcquire((sem), osWaitForever) #define ETHLIB_OS_SEM_POST(sem) osSemaphoreRelease((sem)) typedef osMutexId_t ETHLIB_OS_MTX_TYPE; extern osMutexAttr_t reqMtxAttr; #define ETHLIB_OS_MTX_CREATE() osMutexNew(NULL); #define ETHLIB_OS_RECMTX_CREATE() osMutexNew(&reqMtxAttr); #define ETHLIB_OS_MTX_DESTROY(mtx) osMutexDelete((mtx)) #define ETHLIB_OS_MTX_LOCK(mtx) osMutexAcquire((mtx), osWaitForever) #define ETHLIB_OS_MTX_UNLOCK(mtx) osMutexRelease((mtx)) typedef osMessageQueueId_t ETHLIB_OS_QUEUE_TYPE; #define ETHLIB_OS_QUEUE_CREATE(N, T) osMessageQueueNew((N), sizeof(T), NULL) #define ETHLIB_OS_QUEUE_DESTROY(q) osMessageQueueDelete((q)) #define ETHLIB_OS_QUEUE_PUSH(q, data) osMessageQueuePut((q), (data), 0, 0); #define ETHLIB_OS_QUEUE_POP(q, dst) osMessageQueueGet((q), (dst), NULL, osWaitForever); #define ETHLIB_SLEEP_MS(ms) osDelay((ms)) #elif defined(__linux__) #include #include typedef pthread_t ETHLIB_OS_THREAD_TYPE; #define ETHLIB_OS_THREAD_VAR_NAME(name) thread_##name #define ETHLIB_OS_THREAD_DEFINE(fn,name,prio,stk,param) pthread_t ETHLIB_OS_THREAD_VAR_NAME(name); pthread_create(ÐLIB_OS_THREAD_VAR_NAME(name), NULL, (fn), (param)) #define ETHLIB_OS_THREAD_CREATE(name,param) #define ETHLIB_OS_THREAD_TERMINATE(thread) pthread_cancel(thread) typedef sem_t ETHLIB_OS_SEM_TYPE; #define ETHLIB_OS_SEM_CREATE(sem,N) sem_init((sem), 0, (N)) #define ETHLIB_OS_SEM_DESTROY(sem) sem_destroy((sem)) #define ETHLIB_OS_SEM_WAIT(sem) sem_wait((sem)) #define ETHLIB_OS_SEM_POST(sem) sem_post((sem)) typedef pthread_mutex_t ETHLIB_OS_MTX_TYPE; #define ETHLIB_OS_MTX_CREATE(mtx) pthread_mutex_init((mtx), NULL) #define ETHLIB_OS_MTX_DESTROY(mtx) pthread_mutex_destroy((mtx)) #define ETHLIB_OS_MTX_LOCK(mtx) pthread_mutex_lock((mtx)) #define ETHLIB_OS_MTX_UNLOCK(mtx) pthread_mutex_unlock((mtx)) // ----------------------------------------- #include //#define ETHLIB_SLEEP_MS(ms) usleep(1000 * (ms)) #define ETHLIB_SLEEP_MS(ms) ; #endif #endif /* INC_ETHERLIB_OPTIONS */ #endif /* SRC_ETHERLIB_OPTIONS */