Browse Source

update

master
zhaohe 2 years ago
parent
commit
471d8e7354
  1. 3
      chip/basic/base.hpp
  2. 1
      chip/chip.hpp
  3. 19
      components/api/zi_uart_receiver.hpp
  4. 25
      components/cmdscheduler/cmd_scheduler_v2.cpp
  5. 12
      components/cmdscheduler/cmd_scheduler_v2.hpp
  6. 3
      components/eq_20_asb_motor/eq20_servomotor.hpp
  7. 46
      components/hardware/uart/zuart_dma_receiver.cpp
  8. 41
      components/hardware/uart/zuart_dma_receiver.hpp
  9. 2
      components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp
  10. 1
      components/pipette_module/pipette_ctrl_module_v2.hpp
  11. 2
      components/sensors/i2ceeprom/m24lr64e_i2c_eeprom.hpp
  12. 2
      components/sensors/m3078/m3078_code_scaner.hpp
  13. 1
      components/step_motor_45/step_motor_45.hpp
  14. 1
      components/step_motor_ctrl_module/step_motor_ctrl_module.hpp
  15. 2
      components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp
  16. 1
      components/xy_robot_ctrl_module/xy_robot_ctrl_module.hpp
  17. 1
      components/zcancmder/zcan_board_module.hpp
  18. 2
      components/zprotocols/zcancmder_v2

3
chip/basic/base.hpp

@ -8,4 +8,5 @@
//
#include "chip_helper.hpp"
//
#include "critical_context.hpp"
#include "critical_context.hpp"
//

1
chip/chip.hpp

@ -7,6 +7,7 @@
#include "zpwm_generator.hpp"
#include "ztim.hpp"
#include "zuart.hpp"
extern "C" {
typedef struct {

19
components/api/zi_uart_receiver.hpp

@ -0,0 +1,19 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "sdk\components\zprotocols\zcancmder_v2\api\errorcode.hpp"
namespace iflytop {
using namespace std;
class ZIUartReceiver {
public:
typedef function<void(uint8_t *data, size_t len)> callback_t;
public:
virtual ~ZIUartReceiver() {}
virtual void startRx(callback_t cb) = 0;
virtual int32_t gertRxBufSize() = 0;
};
} // namespace iflytop

25
components/cmdscheduler/cmd_scheduler_v2.cpp

@ -33,27 +33,18 @@ void CmdSchedulerV2::regbasiccmd() {
});
}
void CmdSchedulerV2::initialize(UART_HandleTypeDef* huart, uint32_t rxbufsize) {
m_rxbufsize = rxbufsize;
m_uart = new ZUART();
void CmdSchedulerV2::initialize(ZIUartReceiver* receiver) {
// m_uart = new ZUARTDmaReceiver();
m_uart = receiver;
ZASSERT(m_uart != NULL);
ZUART::cfg_t cfg;
cfg.huart = huart;
cfg.rxbuffersize = rxbufsize;
cfg.rxovertime_ms = 3;
cfg.name = "CmdSchedulerUart";
rxbuf = new char[rxbufsize + 1];
m_rxbufsize = receiver->gertRxBufSize();
rxbuf = new char[m_rxbufsize + 1];
ZASSERT(rxbuf != NULL);
m_uart->initialize(&cfg);
ZASSERT(m_uart->startRxIt());
m_uart->setrxcb([this](uint8_t* data, size_t len) {
if (m_dataisready) {
return;
}
// m_uart->initialize(&cfg);
m_uart->startRx([this](uint8_t* data, size_t len) {
if (m_dataisready) return;
memcpy(rxbuf, data, len);
rxbuf[len] = '\0';
m_rxsize = len;

12
components/cmdscheduler/cmd_scheduler_v2.hpp

@ -3,8 +3,11 @@
#include <string>
#include "sdk/os/zos.hpp"
#include "sdk\components\hardware\uart\zuart_dma_receiver.hpp"
#include "sdk\components\zprotocols\errorcode\errorcode.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp"
//
#include "sdk\components\api\zi_uart_receiver.hpp"
namespace iflytop {
using namespace std;
@ -21,9 +24,9 @@ class CmdSchedulerV2 : public ICmdParser {
private:
map<string, CMD> m_cmdMap;
ZUART* m_uart;
char* rxbuf;
int32_t m_rxsize = 0;
ZIUartReceiver* m_uart;
char* rxbuf;
int32_t m_rxsize = 0;
uint32_t m_rxbufsize;
@ -32,7 +35,8 @@ class CmdSchedulerV2 : public ICmdParser {
char cmdcache[1024] = {0};
public:
void initialize(UART_HandleTypeDef* huart, uint32_t rxbufsize);
void initialize(ZIUartReceiver* receiver);
virtual void regCMD(const char* cmdname, const char* helpinfo, int paraNum, ICmdFunction_t cmdimpl) override { registerCmd(cmdname, helpinfo, paraNum, cmdimpl); }
void registerCmd(const char* cmdname, const char* helpinfo, int paraNum, ICmdFunction_t cmdimpl);
// void tx(const char* data, int len);

3
components/eq_20_asb_motor/eq20_servomotor.hpp

@ -105,6 +105,8 @@ class Eq20ServoMotor : public ZIModule, public ZIMotor {
*******************************************************************************/
virtual int32_t getid(int32_t *id) override;
virtual int32_t module_ping() { return 0; };
virtual int32_t module_stop() override;
virtual int32_t module_break() override;
virtual int32_t module_get_last_exec_status(int32_t *status) override;
@ -117,7 +119,6 @@ class Eq20ServoMotor : public ZIModule, public ZIMotor {
virtual int32_t module_readio(int32_t *io) override;
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) override;
/*******************************************************************************

46
components/hardware/uart/zuart_dma_receiver.cpp

@ -0,0 +1,46 @@
#include "zuart_dma_receiver.hpp"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sdk\chip\zirq_dispatcher.hpp"
using namespace iflytop;
void ZUARTDmaReceiver::initialize(hardware_config_t *config) {
m_hw_config = *config;
m_rxbufsize = m_hw_config.rxbuffersize;
m_rxbuf = (uint8_t *)malloc(m_rxbufsize);
ZASSERT(m_rxbuf != nullptr);
ZASSERT(m_hw_config.huart != nullptr);
ZASSERT(m_hw_config.dma_rx != nullptr);
memset(m_rxbuf, 0, m_rxbufsize);
m_dmaisstart = false;
}
void ZUARTDmaReceiver::startRx(callback_t cb) {
m_cb = cb;
HAL_UART_Receive_DMA(m_hw_config.huart, (uint8_t *)m_rxbuf, m_rxbufsize);
m_dmaisstart = true;
ChipTimIrqShceduler::instance().regPeriodJob([this](ChipTimIrqShceduler::Job *job) { periodJOBIrq(); }, 1);
}
int32_t ZUARTDmaReceiver::gertRxBufSize() { return m_rxbufsize; }
void ZUARTDmaReceiver::periodJOBIrq() { //
if (!m_dmaisstart) return;
int rxsize = m_rxbufsize - __HAL_DMA_GET_COUNTER(m_hw_config.dma_rx);
if (rxsize != m_rxlen) {
m_rxlen = rxsize;
m_lastrxticket = zos_get_tick();
}
if (zos_haspassedms(m_lastrxticket) > m_hw_config.rxovertime_ms) {
if (m_cb) m_cb(m_rxbuf, m_rxlen);
m_rxlen = 0;
HAL_UART_DMAStop(m_hw_config.huart);
HAL_UART_Receive_DMA(m_hw_config.huart, (uint8_t *)m_rxbuf, m_rxbufsize);
}
}

41
components/hardware/uart/zuart_dma_receiver.hpp

@ -0,0 +1,41 @@
#pragma once
#include <functional>
#include "sdk\components\api\zi_uart_receiver.hpp"
//
#include "sdk/os/zos.hpp"
namespace iflytop {
using namespace std;
class ZUARTDmaReceiver : public ZIUartReceiver {
public:
typedef struct {
UART_HandleTypeDef *huart;
DMA_HandleTypeDef *dma_rx;
int32_t rxbuffersize = 128;
int32_t rxovertime_ms = 3;
} hardware_config_t;
private:
hardware_config_t m_hw_config;
uint8_t *m_rxbuf = nullptr;
int32_t m_rxbufsize = 0;
bool m_dmaisstart = false;
ZIUartReceiver::callback_t m_cb;
int32_t m_lastrxticket = 0;
int32_t m_rxlen = 0;
public:
ZUARTDmaReceiver() {}
void initialize(hardware_config_t *config);
virtual void startRx(callback_t cb) override;
virtual int32_t gertRxBufSize() override;
private:
void periodJOBIrq();
};
} // namespace iflytop

2
components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp

@ -64,6 +64,8 @@ class MiniRobotCtrlModule : public I_MiniServoModule, public ZIModule, public ZI
/*******************************************************************************
* Motor *
*******************************************************************************/
virtual int32_t module_ping() { return 0; };
virtual int32_t motor_enable(int32_t enable) override;
virtual int32_t motor_rotate(int32_t direction, int32_t motor_velocity, int32_t acc) override;
virtual int32_t motor_move_by(int32_t distance, int32_t motor_velocity, int32_t acc) override;

1
components/pipette_module/pipette_ctrl_module_v2.hpp

@ -42,6 +42,7 @@ class PipetteModule : public ZIModule, public ZIPipetteCtrlModule {
/*******************************************************************************
* Module *
*******************************************************************************/
virtual int32_t module_ping() { return 0; };
virtual int32_t module_enable(int32_t enable);

2
components/sensors/i2ceeprom/m24lr64e_i2c_eeprom.hpp

@ -25,6 +25,8 @@ class M24LR64E_I2CEEPROM : public ZIModule {
int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t* data, int32_t* len);
public:
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t* id) override {
*id = this->id;
return 0;

2
components/sensors/m3078/m3078_code_scaner.hpp

@ -79,6 +79,8 @@ class M3078CodeScanner : public ZIModule, public ZICodeScaner {
void clearIdinfo();
public:
virtual int32_t ping() { return 0; };
virtual int32_t getid(int32_t* id) override {
*id = this->id;
return 0;

1
components/step_motor_45/step_motor_45.hpp

@ -100,6 +100,7 @@ class StepMotor45 : public ZIModule, public ZIMotor {
/*******************************************************************************
* OVERRIDE MODULE *
*******************************************************************************/
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t *id) override;
virtual int32_t module_stop() override;

1
components/step_motor_ctrl_module/step_motor_ctrl_module.hpp

@ -112,6 +112,7 @@ class StepMotorCtrlModule : public I_StepMotorCtrlModule, public ZIModule, publi
/*******************************************************************************
* OVERRIDE MODULE *
*******************************************************************************/
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t* id) override;
virtual int32_t module_stop() override;

2
components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp

@ -80,12 +80,14 @@ class WaterCoolingTemperatureControlModule : public ZIModule {
int32_t m_errorcode = 0;
public:
WaterCoolingTemperatureControlModule(){};
virtual ~WaterCoolingTemperatureControlModule(){};
static void createDefaultConfig(config_t* cfg);
void initialize(int32_t id, config_t* cfg, hardwared_config_t* hardwaredconfig);
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t* id) override;

1
components/xy_robot_ctrl_module/xy_robot_ctrl_module.hpp

@ -81,6 +81,7 @@ class XYRobotCtrlModule : public I_XYRobotCtrlModule, public ZIXYMotor, public Z
void loop();
void dumpcfg();
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t* id);
virtual int32_t module_stop();

1
components/zcancmder/zcan_board_module.hpp

@ -46,6 +46,7 @@ class ZCanBoardModule : public ZIModule {
virtual ~ZCanBoardModule() {}
void initialize(int32_t moduleId, hardware_config_t *cfg);
virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t *id) override;
virtual int32_t module_readio(int32_t *io) override;

2
components/zprotocols/zcancmder_v2

@ -1 +1 @@
Subproject commit 77d567330a2d005341f413743a8c16828e53d270
Subproject commit b17e21efac1f2625c635ba947c97641927e3ec38
Loading…
Cancel
Save