From 5be1c6381bda1c24930ec24972d31dd13a09cea3 Mon Sep 17 00:00:00 2001 From: WKJay <1931048074@qq.com> Date: Mon, 26 Jun 2023 16:18:40 +0800 Subject: [PATCH] add RT-Thread support --- mongoose.c | 2 ++ mongoose.h | 27 +++++++++++++++++++++++++++ src/arch.h | 3 +++ src/arch_rtthread.h | 24 ++++++++++++++++++++++++ src/util.c | 2 ++ 5 files changed, 58 insertions(+) create mode 100644 src/arch_rtthread.h diff --git a/mongoose.c b/mongoose.c index 46ecafba..16fa3f10 100644 --- a/mongoose.c +++ b/mongoose.c @@ -6023,6 +6023,8 @@ uint64_t mg_millis(void) { return (uint64_t)rt_time_get(); #elif MG_ARCH == MG_ARCH_CMSIS_RTOS2 return (uint64_t)((osKernelGetTickCount() * 1000) / osKernelGetTickFreq()); +#elif MG_ARCH == MG_ARCH_RTTHREAD + return (uint64_t) ((rt_tick_get() * 1000) / RT_TICK_PER_SECOND); #elif MG_ARCH == MG_ARCH_UNIX && defined(__APPLE__) // Apple CLOCK_MONOTONIC_RAW is equivalent to CLOCK_BOOTTIME on linux // Apple CLOCK_UPTIME_RAW is equivalent to CLOCK_MONOTONIC_RAW on linux diff --git a/mongoose.h b/mongoose.h index 5f708680..afd272be 100644 --- a/mongoose.h +++ b/mongoose.h @@ -41,6 +41,7 @@ extern "C" { #define MG_ARCH_RP2040 11 // Raspberry Pi RP2040 #define MG_ARCH_ARMCC 12 // Keil MDK-Core with Configuration Wizard #define MG_ARCH_CMSIS_RTOS2 13 // CMSIS-RTOS API v2 (Keil RTX5, FreeRTOS) +#define MG_ARCH_RTTHREAD 14 // RT-Thread RTOS #if !defined(MG_ARCH) #if defined(__unix__) || defined(__APPLE__) @@ -62,6 +63,8 @@ extern "C" { #define MG_ARCH MG_ARCH_RP2040 #elif defined(__ARMCC_VERSION) #define MG_ARCH MG_ARCH_ARMCC +#elif defined(__RTTHREAD__) +#define MG_ARCH MG_ARCH_RTTHREAD #endif #endif // !defined(MG_ARCH) @@ -255,6 +258,30 @@ int mkdir(const char *, mode_t); #endif +#if MG_ARCH == MG_ARCH_RTTHREAD + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MG_IO_SIZE +#define MG_IO_SIZE 1460 +#endif + +#endif // MG_ARCH == MG_ARCH_RTTHREAD + + #if MG_ARCH == MG_ARCH_ARMCC || MG_ARCH == MG_ARCH_CMSIS_RTOS1 || \ MG_ARCH == MG_ARCH_CMSIS_RTOS2 diff --git a/src/arch.h b/src/arch.h index d40c767a..1636b74a 100644 --- a/src/arch.h +++ b/src/arch.h @@ -14,6 +14,7 @@ #define MG_ARCH_RP2040 11 // Raspberry Pi RP2040 #define MG_ARCH_ARMCC 12 // Keil MDK-Core with Configuration Wizard #define MG_ARCH_CMSIS_RTOS2 13 // CMSIS-RTOS API v2 (Keil RTX5, FreeRTOS) +#define MG_ARCH_RTTHREAD 14 // RT-Thread RTOS #if !defined(MG_ARCH) #if defined(__unix__) || defined(__APPLE__) @@ -35,6 +36,8 @@ #define MG_ARCH MG_ARCH_RP2040 #elif defined(__ARMCC_VERSION) #define MG_ARCH MG_ARCH_ARMCC +#elif defined(__RTTHREAD__) +#define MG_ARCH MG_ARCH_RTTHREAD #endif #endif // !defined(MG_ARCH) diff --git a/src/arch_rtthread.h b/src/arch_rtthread.h new file mode 100644 index 00000000..937c4a33 --- /dev/null +++ b/src/arch_rtthread.h @@ -0,0 +1,24 @@ +#pragma once + +#if MG_ARCH == MG_ARCH_RTTHREAD + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MG_IO_SIZE +#define MG_IO_SIZE 1460 +#endif + +#endif // MG_ARCH == MG_ARCH_RTTHREAD diff --git a/src/util.c b/src/util.c index 28941f57..acd37f40 100644 --- a/src/util.c +++ b/src/util.c @@ -113,6 +113,8 @@ uint64_t mg_millis(void) { return (uint64_t)rt_time_get(); #elif MG_ARCH == MG_ARCH_CMSIS_RTOS2 return (uint64_t)((osKernelGetTickCount() * 1000) / osKernelGetTickFreq()); +#elif MG_ARCH == MG_ARCH_RTTHREAD + return (uint64_t) ((rt_tick_get() * 1000) / RT_TICK_PER_SECOND); #elif MG_ARCH == MG_ARCH_UNIX && defined(__APPLE__) // Apple CLOCK_MONOTONIC_RAW is equivalent to CLOCK_BOOTTIME on linux // Apple CLOCK_UPTIME_RAW is equivalent to CLOCK_MONOTONIC_RAW on linux