Browse Source

update

master
zhaohe 1 year ago
parent
commit
fd495b3223
  1. 1
      sdk.hpp
  2. 15
      stm32/critical.c
  3. 46
      zqueue.cpp
  4. 20
      zqueue.hpp

1
sdk.hpp

@ -9,4 +9,5 @@ extern "C" {
#include "ticket.hpp" #include "ticket.hpp"
#include "critical_context.hpp" #include "critical_context.hpp"
#include "zthread.hpp" #include "zthread.hpp"
#include "zqueue.hpp"
void sdkinit(); void sdkinit();

15
stm32/critical.c

@ -1,15 +1,6 @@
#include "FreeRTOS.h"
#include "main.h" #include "main.h"
static uint8_t g_port_exit_critical_count; static uint8_t g_port_exit_critical_count;
void stm32_critical_enter(void) {
if (g_port_exit_critical_count == 0) {
__disable_irq();
}
g_port_exit_critical_count++;
}
void stm32_critical_exit(void) {
g_port_exit_critical_count--;
if (g_port_exit_critical_count == 0) {
__enable_irq();
}
}
void stm32_critical_enter(void) { vPortEnterCritical(); }
void stm32_critical_exit(void) { vPortExitCritical(); }

46
zqueue.cpp

@ -0,0 +1,46 @@
#include "zqueue.hpp"
#include "logger.h"
using namespace iflytop;
#define TAG "ZQueue"
void ZQueue::initialize(int32_t num, int32_t eachsize) { //
xQueue = xQueueCreate(num, eachsize);
ZASSERT(xQueue);
}
void ZQueue::clear() { xQueueReset(xQueue); }
bool ZQueue::send(uint8_t *data, size_t len, int32_t overtime) {
BaseType_t xStatus;
xStatus = xQueueSend(xQueue, data, overtime);
if (xStatus == pdPASS) {
return true;
} else {
return false;
}
}
bool ZQueue::receive(uint8_t *data, size_t *len, int32_t overtime) {
BaseType_t xStatus;
xStatus = xQueueReceive(xQueue, data, overtime);
if (xStatus == pdPASS) {
return true;
} else {
return false;
}
}
bool ZQueue::isFull() {
BaseType_t xStatus = xQueueIsQueueFullFromISR(xQueue);
if (xStatus == pdTRUE) {
return true;
} else {
return false;
}
}
bool ZQueue::isEmpty() {
BaseType_t xStatus = xQueueIsQueueEmptyFromISR(xQueue);
if (xStatus == pdTRUE) {
return true;
} else {
return false;
}
}

20
zqueue.hpp

@ -0,0 +1,20 @@
#pragma ocne
#include "cmsis_os.h"
namespace iflytop {
class ZQueue {
private:
int32_t m_num = 0;
int32_t m_eachsize = 0;
QueueHandle_t xQueue;
public:
void initialize(int32_t num, int32_t eachsize);
void clear();
bool send(uint8_t *data, size_t len, int32_t overtime);
bool receive(uint8_t *data, size_t *len, int32_t overtime);
bool isFull();
bool isEmpty();
};
} // namespace iflytop
Loading…
Cancel
Save