chore(): Изменение кодировки на UTF-8. Удалены битые комментарии
This commit is contained in:
parent
29e5c3e92f
commit
b82867ea12
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* swap.h
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* clock.cpp
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/clock/clock.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* clock.hpp
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -29,7 +29,7 @@ public:
|
||||
~Clock();
|
||||
private:
|
||||
ClockP_Object obj_;
|
||||
uint32_t prd_ms_; /// Ïåðèîä â ìñ
|
||||
uint32_t prd_ms_; /// Период в мс
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth.cpp
|
||||
*
|
||||
* Created on: 9 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 9 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet/eth.hpp"
|
||||
@ -14,10 +14,6 @@
|
||||
#include <cstring>
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sysconfig.
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <build_name>/syscfg
|
||||
*/
|
||||
#include "ti_enet_config.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -80,7 +76,7 @@ bool free_rtos::Eth::Init(Settings& sett)
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Callback <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ioctl
|
||||
|
||||
static void eth_asyncIoctlCb(Enet_Event evt,
|
||||
uint32_t evtNum,
|
||||
void *evtCbArgs,
|
||||
@ -212,7 +208,7 @@ void free_rtos::Eth::link_task()
|
||||
continue;
|
||||
}
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD> SWITCH)
|
||||
|
||||
if (!tx_flow_.open((TEthMacPorts)macPort_[i], ENET_DMA_TX_CH0))
|
||||
{
|
||||
EnetAppUtils_print("link_task: %s: Failed to open tx flow\n", name_.c_str());
|
||||
@ -234,7 +230,7 @@ void free_rtos::Eth::link_task()
|
||||
}
|
||||
}
|
||||
else if (macPort_[i] == ENET_MAC_PORT_2) {
|
||||
//rx_flow_[i].set_passive(); /// <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//rx_flow_[i].set_passive();
|
||||
}
|
||||
|
||||
tx_flow_.enable((TEthMacPorts)macPort_[i]);
|
||||
@ -248,7 +244,7 @@ void free_rtos::Eth::link_task()
|
||||
}
|
||||
|
||||
|
||||
ClockP_usleep(100000); // 100ms /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31><30> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
ClockP_usleep(100000); // 100ms
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth.hpp
|
||||
*
|
||||
* Created on: 6 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -31,13 +31,13 @@ namespace free_rtos {
|
||||
class Eth {
|
||||
public:
|
||||
typedef enum {
|
||||
e_ethInstSwitch = 1, /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_ethInstDualMac_1, /// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_ethInstDualMac_2 /// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_ethInstSwitch = 1,
|
||||
e_ethInstDualMac_1,
|
||||
e_ethInstDualMac_2
|
||||
}TEthInstId;
|
||||
|
||||
struct Settings {
|
||||
uint32_t id; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t id;
|
||||
|
||||
/* Peripheral type */
|
||||
Enet_Type enetType;
|
||||
@ -87,7 +87,7 @@ private:
|
||||
|
||||
private:
|
||||
enum SignalsId {
|
||||
e_signalIoctl, /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ioctl
|
||||
e_signalIoctl,
|
||||
e_signalTotal
|
||||
};
|
||||
|
||||
@ -96,32 +96,32 @@ private:
|
||||
e_taskTotal
|
||||
};
|
||||
|
||||
uint32_t id_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string name_; /// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t id_;
|
||||
std::string name_;
|
||||
|
||||
uint32_t core_id_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
uint32_t core_id_;
|
||||
|
||||
Enet_Type enetType_;
|
||||
|
||||
Enet_Type enetType_; /// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac: 1 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SWITCH, 2 <20> 3 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DUAL MAC ( <20><><EFBFBD> mac1 <20> mac2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
uint32_t instId_;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Enet_MacPort macPort_[e_ethMacTotal];
|
||||
UBaseType_t rxTaskPriority_[e_ethMacTotal];
|
||||
UBaseType_t rxTaskStackSize_[e_ethMacTotal];
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t macPortNum_;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ????
|
||||
|
||||
EnetPer_AttachCoreOutArgs attachInfo_;
|
||||
|
||||
/// Enet <20> Udma <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
EnetApp_HandleInfo handleInfo_;
|
||||
|
||||
EthTxFlow tx_flow_; ///
|
||||
EthRxFlow rx_flow_[e_ethMacTotal]; /// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SWITCH
|
||||
EthRxFlow rx_flow_[e_ethMacTotal];
|
||||
|
||||
Semaphore sem_[e_signalTotal];
|
||||
|
||||
@ -131,11 +131,11 @@ private:
|
||||
|
||||
bool host_ready_;
|
||||
|
||||
TEthFrameMacAddr hostMacAddr_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TEthFrameMacAddr hostMacAddr_;
|
||||
|
||||
uint32_t vlan_id_;
|
||||
|
||||
EthStack eth_stack_; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
EthStack eth_stack_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_frame.h
|
||||
*
|
||||
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 7 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -12,13 +12,13 @@
|
||||
|
||||
#define ETH_FRAME_MAC_ADDR_LEN_BYTES (6u)
|
||||
|
||||
#define ETH_FRAME_MAC_ADDR_MASK (0xFFFFFFFFFFFFul) /// 6 <20><><EFBFBD><EFBFBD>
|
||||
#define ETH_FRAME_MAC_ADDR_MASK (0xFFFFFFFFFFFFul)
|
||||
|
||||
#define ETH_FRAME_MAC_ADDR_BROADCAST (0xFFFFFFFFFFFFul) /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define ETH_FRAME_MAC_ADDR_BROADCAST (0xFFFFFFFFFFFFul)
|
||||
|
||||
#define ETH_FRAME_MIN_LEN (14u) /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define ETH_FRAME_MIN_LEN (14u)
|
||||
|
||||
#define ETH_FRAME_MAX_LEN (1518u) /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define ETH_FRAME_MAX_LEN (1518u)
|
||||
|
||||
typedef union {
|
||||
uint64_t addr;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ioctl.c
|
||||
*
|
||||
* Created on: 10 мар. 2023 г.
|
||||
* Created on: 10 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet/eth_ioctl.h"
|
||||
@ -12,7 +12,7 @@ int32_t eth_ioctl(Enet_Handle handle, uint32_t core_id, uint32_t cmd, Enet_Ioctl
|
||||
{
|
||||
int32_t status = ENET_SOK;
|
||||
/**
|
||||
* Если нужны другие команды, то добавить сюда.
|
||||
* Если нужны другие команды, то добавить сюда.
|
||||
*/
|
||||
switch(cmd)
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ioctl.h
|
||||
*
|
||||
* Created on: 10 ìàð. 2023 ã.
|
||||
* Created on: 10 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_rx_flow.cpp
|
||||
*
|
||||
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 7 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet/eth_rx_flow.hpp"
|
||||
@ -14,18 +14,11 @@
|
||||
#include <networking/enet/utils/include/enet_apputils.h>
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sysconfig.
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <build_name>/syscfg
|
||||
*/
|
||||
#include "ti_enet_config.h"
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
using namespace free_rtos;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void free_rtos::rxIsrHandler(void *appData)
|
||||
{
|
||||
EthRxFlow * rx_flow = (EthRxFlow *)appData;
|
||||
@ -168,13 +161,12 @@ bool free_rtos::EthRxFlow::open(TEthMacPorts port_id, int32_t enetDmaRxChId, UBa
|
||||
default_port_id_ = port_id;
|
||||
enetDmaRxChId_ = enetDmaRxChId;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
rxInArgs.notifyCb = rxIsrHandler; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
rxInArgs.cbArg = this; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// Регистрация обработчика прерывания модуля DMA
|
||||
rxInArgs.notifyCb = rxIsrHandler;
|
||||
rxInArgs.cbArg = this;
|
||||
|
||||
EnetApp_getRxDmaHandle(enetDmaRxChId, &rxInArgs, &rxChInfo);
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
rx_start_flow_idx_ = rxChInfo.rxFlowStartIdx;
|
||||
rx_flow_idx_ = rxChInfo.rxFlowIdx;
|
||||
dma_handle_ = rxChInfo.hRxCh;
|
||||
@ -187,7 +179,6 @@ bool free_rtos::EthRxFlow::open(TEthMacPorts port_id, int32_t enetDmaRxChId, UBa
|
||||
eth_stack_.set_mac_address(mac_addr_.addr);
|
||||
}
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
EnetAppUtils_assert(rxChInfo.useGlobalEvt == true);
|
||||
EnetAppUtils_assert(rxChInfo.sizeThreshEn == 0U);
|
||||
EnetAppUtils_assert(rxChInfo.maxNumRxPkts >= numPkts[enetDmaRxChId]);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_rx_dma.hpp
|
||||
*
|
||||
* Created on: 6 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -36,31 +36,31 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
friend void rxIsrHandler(void *appData); /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
friend void rxIsrHandler(void *appData);
|
||||
|
||||
friend void rxTaskHandler(void *appData); ///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
friend void rxTaskHandler(void *appData);
|
||||
|
||||
void initRxFreePktQ(void * appPriv, EnetDma_PktQ * p_packet_queue, uint32_t qCount);
|
||||
void retrieveReadyRxPktQ();
|
||||
void submitFreeRxPktQ(EnetDma_PktQ * p_packet_queue);
|
||||
|
||||
void rxProcessPktTask(); ///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void rxProcessPktTask();
|
||||
|
||||
private:
|
||||
enum SignalsId {
|
||||
e_signalRxPkt, /// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_signalRxPkt,
|
||||
e_signalTotal
|
||||
};
|
||||
|
||||
TEthMacPorts default_port_id_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TEthMacPorts default_port_id_;
|
||||
int32_t enetDmaRxChId_;
|
||||
bool open_; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool open_;
|
||||
|
||||
Semaphore sem_[e_signalTotal]; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Semaphore sem_[e_signalTotal];
|
||||
|
||||
Task rx_task; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Task rx_task;
|
||||
|
||||
TEthFrameMacAddr& mac_addr_; /// mac <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
TEthFrameMacAddr& mac_addr_;
|
||||
|
||||
EthStackIface& eth_stack_;
|
||||
|
||||
@ -69,7 +69,7 @@ private:
|
||||
EnetDma_RxChHandle dma_handle_;
|
||||
EnetDma_PktQ rx_ready_pktq_;
|
||||
|
||||
bool passive_mode_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool passive_mode_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
/*
|
||||
* app_enet_open_close.c
|
||||
*
|
||||
* Created on: 1 мар. 2023 г.
|
||||
* Created on: 1 мар. 2023 г.
|
||||
* Author: sychev
|
||||
* Файл реализует функции объявленные в сгенеренном файле
|
||||
* ti_enet_open_close.h и вызываемые в сгенеренном файле ti_enet_open_close.с
|
||||
* Файл реализует функции объявленные в сгенеренном файле
|
||||
* ti_enet_open_close.h и вызываемые в сгенеренном файле ti_enet_open_close.с
|
||||
*/
|
||||
#include <utils/include/enet_board.h>
|
||||
#include <networking/enet/core/include/per/icssg.h>
|
||||
#include <networking/enet/utils/include/enet_apputils.h>
|
||||
|
||||
#define ETH_TYPES_MAC_PORT_MAX (2u) /// Количество mac-портов
|
||||
#define ETH_TYPES_MAC_PORT_MAX (2u) /// Количество mac-портов
|
||||
|
||||
/// Сгенеренные файлы
|
||||
/// Сгенеренные файлы
|
||||
#include <ti_board_config.h>
|
||||
|
||||
#include <stddef.h>
|
||||
@ -22,7 +22,7 @@ static void eth_macMode2MacMii(emac_mode macMode, EnetMacPort_Interface *mii);
|
||||
static int32_t eth_getSubsPortIdx(Enet_Type enetType, uint32_t instId, uint32_t *subsportIdx);
|
||||
|
||||
/*
|
||||
* Объявлена и используется в сгенеренном файле ti_enet_open_close.h
|
||||
* Объявлена и используется в сгенеренном файле ti_enet_open_close.h
|
||||
*/
|
||||
void EnetApp_initLinkArgs(Enet_Type enetType,
|
||||
uint32_t instId,
|
||||
@ -110,7 +110,7 @@ void EnetApp_initLinkArgs(Enet_Type enetType,
|
||||
}
|
||||
|
||||
/*
|
||||
* Объявлена и используется в сгенеренном файле ti_enet_open_close.h
|
||||
* Объявлена и используется в сгенеренном файле ti_enet_open_close.h
|
||||
*/
|
||||
void EnetApp_updateIcssgInitCfg(Enet_Type enetType, uint32_t instId, Icssg_Cfg *icssgCfg)
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_tx_flow.cpp
|
||||
*
|
||||
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 7 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet/eth_tx_flow.hpp"
|
||||
@ -18,16 +18,9 @@
|
||||
#include <task.h>
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sysconfig.
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <build_name>/syscfg
|
||||
*/
|
||||
#include "ti_enet_config.h"
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p_packet_queue
|
||||
*/
|
||||
static void eth_initTxFreePktQ(void * appPriv, EnetDma_PktQ * p_packet_queue, uint32_t qCount)
|
||||
{
|
||||
EnetDma_Pkt *pPktInfo;
|
||||
@ -41,9 +34,9 @@ static void eth_initTxFreePktQ(void * appPriv, EnetDma_PktQ * p_packet_queue, ui
|
||||
ENET_MEM_LARGE_POOL_PKT_SIZE,
|
||||
ENETDMA_CACHELINE_ALIGNMENT);
|
||||
EnetAppUtils_assert(pPktInfo != NULL);
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
ENET_UTILS_SET_PKT_APP_STATE(&pPktInfo->pktState, ENET_PKTSTATE_APP_WITH_FREEQ);
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p_packet_queue
|
||||
|
||||
EnetQueue_enq(p_packet_queue, &pPktInfo->node);
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_tx_flow.hpp
|
||||
*
|
||||
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 7 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -51,8 +51,8 @@ private:
|
||||
|
||||
//-------------------------------------------------
|
||||
uint32_t tx_ch_num_;
|
||||
EnetDma_TxChHandle dma_handle_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA
|
||||
EnetDma_PktQ tx_free_pktq_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
EnetDma_TxChHandle dma_handle_;
|
||||
EnetDma_PktQ tx_free_pktq_;
|
||||
|
||||
PortData port_data_[e_ethMacTotal];
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_tx_iface.hpp
|
||||
*
|
||||
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_types.hpp
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_vlan.c
|
||||
*
|
||||
* Created on: 9 мар. 2023 г.
|
||||
* Created on: 9 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet/eth_vlan.h"
|
||||
@ -184,7 +184,7 @@ int32_t eth_vlan_init(Enet_Handle handle,
|
||||
prioMap[i] = 0U;
|
||||
}
|
||||
|
||||
/* Установите команду IOCTL, чтобы сделать PORT1 граничным портом, а PORT2 принимать все типы пакетов. */
|
||||
/* Установите команду IOCTL, чтобы сделать PORT1 граничным портом, а PORT2 принимать все типы пакетов. */
|
||||
eth_vlan_setPriorityRegMapping(handle, core_id, ENET_MAC_PORT_1, prioRegenMap);
|
||||
eth_vlan_setPriorityMapping(handle, core_id, ENET_MAC_PORT_1, prioMap);
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_vlan.hpp
|
||||
*
|
||||
* Created on: 9 ìàð. 2023 ã.
|
||||
* Created on: 9 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ecat.cpp
|
||||
*
|
||||
* Created on: 16 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 16 апр. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
/*
|
||||
* eth_ecat.hpp
|
||||
*
|
||||
* Created on: 16 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Author: sychev, algin
|
||||
* Created on: 16 апр. 2023 г.
|
||||
* Author: algin
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_ETHERNET_INDUSTRY_ETH_ECAT_HPP_
|
||||
@ -264,7 +264,7 @@ private:
|
||||
telegram::EcatTelegram telegram_;
|
||||
eeprom::EEPROM eeprom_;
|
||||
|
||||
TEthMacPorts port_id_; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TEthMacPorts port_id_;
|
||||
|
||||
bool ready_;
|
||||
|
||||
|
||||
@ -217,10 +217,6 @@ public:
|
||||
buffer_regs_[MailboxesRegs::AVAILABLE] = sync_manager_read.offset + 0x05;
|
||||
|
||||
return telegram.transfer(queue);
|
||||
/*
|
||||
telegram.transfer(datagram_write);
|
||||
telegram.transfer(datagram_read);
|
||||
*/
|
||||
}
|
||||
|
||||
template<typename TypeT>
|
||||
@ -332,10 +328,6 @@ public:
|
||||
auto queue = datagram_write + datagram_read;
|
||||
|
||||
return telegram.transfer(queue);
|
||||
/*
|
||||
telegram.transfer(datagram_write);
|
||||
telegram.transfer(datagram_read);
|
||||
*/
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@ -64,7 +64,7 @@ uint8_t* EcatTelegram::pack(uint8_t *raw) {
|
||||
{0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
|
||||
ETH_PROT_ECAT_LE };
|
||||
TEcatFrameHeader *p_hdr = new(raw + sizeof(TEthFrameHeader)) TEcatFrameHeader{ .bits = { .length = 0,
|
||||
.type = static_cast<uint16_t>(ec_network::PROTOCOL_TYPE) } };
|
||||
.type = static_cast<uint16_t>(ec_network::PROTOCOL_TYPE) } };
|
||||
uint8_t *p_datagram_first = raw + sizeof(TEthFrameHeader) + sizeof(TEcatFrameHeader);
|
||||
uint8_t *p_datagram_last = p_datagram_first;
|
||||
auto first = datagram_queue_.get_first();
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
#define ETH_PROT_ECAT_LE 0xa488 /// ETHERCAT
|
||||
#define ETH_PROT_ECAT_BE 0x88a4 /// ETHERCAT
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> be)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t length : 11; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 11
|
||||
@ -21,9 +21,7 @@ typedef struct
|
||||
uint16_t type : 4;
|
||||
}TEcatFrameHeaderBits;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ethercat
|
||||
*/
|
||||
|
||||
typedef union
|
||||
{
|
||||
uint16_t all;
|
||||
@ -43,11 +41,7 @@ typedef union {
|
||||
TEcatDgLenBits bits;
|
||||
}TEcatDgLen;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ethercat
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>( <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> be),
|
||||
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8 <EFBFBD><EFBFBD><EFBFBD>.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_arp.cpp
|
||||
*
|
||||
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_arp.hpp"
|
||||
@ -17,7 +17,7 @@ void free_rtos::clock_timeout(ClockP_Object * obj, void * arg)
|
||||
{
|
||||
EthArp * p_arp = ( EthArp *)arg;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip
|
||||
|
||||
if (p_arp->tmrGratuitous_.tick(100))
|
||||
{
|
||||
if (p_arp->table_mac_.empty()) {
|
||||
@ -37,7 +37,7 @@ void free_rtos::clock_timeout(ClockP_Object * obj, void * arg)
|
||||
}
|
||||
else
|
||||
{
|
||||
p_arp->request(item.first); /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ip
|
||||
p_arp->request(item.first);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -58,9 +58,9 @@ bool free_rtos::EthArp::init(TEthMacPorts eth_port_id, uint64_t self_mac, uint32
|
||||
|
||||
init_request_pkt(self_mac_, self_ip_);
|
||||
|
||||
clock_.init(100, free_rtos::clock_timeout, this); /// 100<30><30>
|
||||
clock_.init(100, free_rtos::clock_timeout, this);
|
||||
|
||||
tmrGratuitous_.start(1000); /// 1 <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tmrGratuitous_.start(1000);
|
||||
|
||||
clock_.start();
|
||||
|
||||
@ -71,7 +71,7 @@ void free_rtos::EthArp::init_request_pkt(uint64_t self_mac, uint32_t self_ip)
|
||||
{
|
||||
TArpHeader * arp_hdr = (TArpHeader *)(request_pkt_.data + sizeof(TEthFrameHeader));
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ARP
|
||||
|
||||
memcpy(arp_hdr->ar_sha, &self_mac_, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
memset(arp_hdr->ar_tha, 0, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
memcpy(arp_hdr->ar_spa, &self_ip_, ETH_IP_ADDR_LEN);
|
||||
@ -89,12 +89,12 @@ bool free_rtos::EthArp::request(uint32_t ip)
|
||||
{
|
||||
TArpHeader * arp_hdr = (TArpHeader *)(request_pkt_.data + sizeof(TEthFrameHeader));
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip-<2D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
memcpy(arp_hdr->ar_tpa, &ip, ETH_IP_ADDR_LEN);
|
||||
|
||||
request_pkt_.length = sizeof(TArpHeader);
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
return eth_stack_.send_pkt(eth_port_id_, ETH_FRAME_MAC_ADDR_BROADCAST, ETH_PROT_ARP_BE, request_pkt_);
|
||||
}
|
||||
|
||||
@ -111,16 +111,16 @@ bool free_rtos::EthArp::try_request(uint32_t ip)
|
||||
{
|
||||
p_ip_req_data = &item->second;
|
||||
if (p_ip_req_data->mac != 0) {
|
||||
return true; /// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return true;
|
||||
}
|
||||
else if (p_ip_req_data->tmr.is_started()) {
|
||||
return true; /// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
p_ip_req_data->attemps = 0;
|
||||
p_ip_req_data->tmr.start(1000); /// <20><><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||||
p_ip_req_data->tmr.start(1000);
|
||||
|
||||
return request(ip);
|
||||
}
|
||||
@ -171,14 +171,11 @@ int32_t free_rtos::EthArp::Process(uint8_t * p_data, uint32_t len)
|
||||
memcpy(&mac_sender, arp_hdr->ar_sha, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
memcpy(&ip_sender, arp_hdr->ar_spa, ETH_IP_ADDR_LEN);
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip == 0, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "Who has....".
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
*/
|
||||
|
||||
if (ip_sender == 0) {
|
||||
return 0;
|
||||
}
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> arp-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
add(mac_sender, ip_sender);
|
||||
|
||||
if ( type == arp_opr_be_[e_oprRequest])
|
||||
@ -188,16 +185,16 @@ int32_t free_rtos::EthArp::Process(uint8_t * p_data, uint32_t len)
|
||||
|
||||
if (ip_target == self_ip_)
|
||||
{
|
||||
/// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
arp_hdr->ar_op = arp_opr_be_[e_oprReply];
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
memcpy(arp_hdr->ar_tha, arp_hdr->ar_sha, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
memcpy(arp_hdr->ar_sha, &self_mac_, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
memcpy(arp_hdr->ar_tpa, arp_hdr->ar_spa, ETH_IP_ADDR_LEN);
|
||||
memcpy(arp_hdr->ar_spa, &self_ip_, ETH_IP_ADDR_LEN);
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_arp.hpp
|
||||
*
|
||||
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -49,9 +49,9 @@ private:
|
||||
};
|
||||
|
||||
struct ArpIpReqData {
|
||||
uint64_t mac = 0; /// <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t attemps = 0; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TimerSw tmr; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint64_t mac = 0;
|
||||
uint32_t attemps = 0;
|
||||
TimerSw tmr;
|
||||
};
|
||||
|
||||
static const uint32_t pkt_len = 42;
|
||||
@ -60,8 +60,8 @@ private:
|
||||
|
||||
TEthPkt request_pkt_;
|
||||
|
||||
std::map<uint64_t, uint32_t> table_mac_; /// <20><><EFBFBD><EFBFBD> mac, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip
|
||||
std::map<uint32_t, ArpIpReqData> table_ip_; /// <20><><EFBFBD><EFBFBD> ip,
|
||||
std::map<uint64_t, uint32_t> table_mac_;
|
||||
std::map<uint32_t, ArpIpReqData> table_ip_;
|
||||
|
||||
uint64_t self_mac_;
|
||||
uint32_t self_ip_;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_arp_iface.hpp
|
||||
*
|
||||
* Created on: 14 ìàð. 2023 ã.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_checksum.c
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_checksum.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_checksum.h
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_icmp.cpp
|
||||
*
|
||||
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_icmp.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_icmp.hpp
|
||||
*
|
||||
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_icmp_types.h
|
||||
*
|
||||
* Created on: 14 ìàð. 2023 ã.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip.cpp
|
||||
*
|
||||
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_ip.hpp"
|
||||
@ -41,12 +41,9 @@ bool free_rtos::EthIp::send(TEthMacPorts port_id, uint32_t dest_ip, uint8_t prot
|
||||
{
|
||||
uint64_t mac_dst;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD> mac-<2D><><EFBFBD><EFBFBD><EFBFBD> <20><> arp <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (!arp_.getMacAddr(dest_ip, mac_dst)) {
|
||||
/*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> arp-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> arp-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> getMacAddr)
|
||||
*/
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -85,7 +82,7 @@ bool free_rtos::EthIp::send(TEthMacPorts port_id, uint32_t dest_ip, uint8_t prot
|
||||
|
||||
ip_header->ip_sum = BASE_SWAP16(cksum);
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
return eth_stack_.send_pkt(port_id, mac_dst, ETH_PROT_IP_BE, pkt);
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip.hpp
|
||||
*
|
||||
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -43,10 +43,10 @@ private:
|
||||
EthStackIface& eth_stack_;
|
||||
EthArpIface& arp_;
|
||||
|
||||
uint32_t self_ip_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip-<2D><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t self_ip_;
|
||||
uint64_t self_mac_;
|
||||
|
||||
uint16_t ip_indet_; /// \u043f\u0457\u0405\u043f\u0457\u0405\u043f\u0457\u0405\u043f\u0457\u0405 ip_id
|
||||
uint16_t ip_indet_;
|
||||
|
||||
inline uint16_t fillIpHeader(IpHandlerArgs& ipHandlerArgs);
|
||||
inline uint16_t fillEthFrameHeader(IpHandlerArgs& ipHandlerArgs);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip_checksum.c
|
||||
*
|
||||
* Created on: 14 ìàð. 2023 ã.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "eth_ip_checksum.h"
|
||||
@ -19,4 +19,3 @@ uint16_t eth_ip_calcChecksum(uint16_t * const data, uint32_t length)
|
||||
|
||||
return (uint16_t) (~crc);
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip_checksum.h
|
||||
*
|
||||
* Created on: 14 ìàð. 2023 ã.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip_iface.hpp
|
||||
*
|
||||
* Created on: 15 ìàð. 2023 ã.
|
||||
* Created on: 15 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -26,7 +26,7 @@ struct IpHandlerArgs : public EthStackHandlerArgs {
|
||||
class EthIpIface {
|
||||
public:
|
||||
/**
|
||||
* Ïåðåäà÷à ïàêåòà
|
||||
* Передача пакета
|
||||
*/
|
||||
virtual bool send(TEthMacPorts port_id, uint32_t dest_ip, uint8_t prot_id, TEthPkt& pkt) = 0;
|
||||
virtual bool send(IpHandlerArgs& handlerArgs) = 0;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip_prots_id.h
|
||||
*
|
||||
* Created on: 14 ìàð. 2023 ã.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_ip_types.h
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* eth_prot.h
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
* Èäåíòèôèêàòîðû ïðîòîêîëîâ Ethernet
|
||||
* Идентификаторы протоколов Ethernet
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_ETHERNET_ETH_PROTS_ID_H_
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_stack.cpp
|
||||
*
|
||||
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_stack.hpp"
|
||||
@ -73,16 +73,16 @@ bool free_rtos::EthStack::send_pkt(EthStackHandlerArgs& handlerArgs)
|
||||
|
||||
void free_rtos::EthStack::rx_handler(uint8_t * p_data, uint32_t len)
|
||||
{
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> eth-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 60 <20><><EFBFBD><EFBFBD>
|
||||
|
||||
if ( len < ETH_FRAME_MIN_LEN) {
|
||||
return;
|
||||
}
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint64_t dest_addr = *((uint64_t*)p_data);
|
||||
dest_addr &= ETH_FRAME_MAC_ADDR_MASK; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint64_t dest_addr = *((uint64_t*)p_data);
|
||||
dest_addr &= ETH_FRAME_MAC_ADDR_MASK;
|
||||
|
||||
|
||||
if ((ETH_FRAME_MAC_ADDR_BROADCAST != dest_addr) &&
|
||||
(eth_.self_mac_ != dest_addr)) {
|
||||
return;
|
||||
@ -90,21 +90,21 @@ void free_rtos::EthStack::rx_handler(uint8_t * p_data, uint32_t len)
|
||||
|
||||
TEthFrameHeader * p_eth_hdr = (TEthFrameHeader *)p_data;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
int32_t reply_len = rx_pkt_handler_.Process(p_eth_hdr->prot_id,
|
||||
p_data + sizeof(TEthFrameHeader),
|
||||
len - sizeof(TEthFrameHeader));
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (reply_len > 0) {
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
memcpy(p_eth_hdr->mac_dest, p_eth_hdr->mac_src, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> mac-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
memcpy(p_eth_hdr->mac_src, ð_.self_mac_, ETH_FRAME_MAC_ADDR_LEN_BYTES);
|
||||
|
||||
reply_len+=sizeof(TEthFrameHeader);
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
tx_flow_.send(eth_.mac_port_, p_data, reply_len);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_stack.hpp
|
||||
*
|
||||
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -43,14 +43,12 @@ public:
|
||||
|
||||
EthUdpServerIface * getUdpServerPtr() {return &udp_;}
|
||||
|
||||
/*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ethernet
|
||||
*/
|
||||
|
||||
virtual bool Register(uint32_t prot_id, Handler * p_handler) override;
|
||||
|
||||
private:
|
||||
struct EthData {
|
||||
uint64_t self_mac_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint64_t self_mac_;
|
||||
TEthMacPorts mac_port_;
|
||||
uint32_t self_ip_;
|
||||
};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_stack_iface.hpp
|
||||
*
|
||||
* Created on: 14 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 14 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -20,26 +20,18 @@ struct EthStackHandlerArgs : public TxFlowHandlerArgs {
|
||||
|
||||
class EthStackIface {
|
||||
public:
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
virtual void set_mac_address(uint64_t mac_addr_be) = 0;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eth <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
virtual void rx_handler(uint8_t * p_data, uint32_t len) = 0;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
virtual bool send_pkt(TEthMacPorts port_id, uint64_t mac_dst, uint16_t prot_id, TEthPkt& pkt) = 0;
|
||||
|
||||
virtual bool send_pkt(EthStackHandlerArgs& handlerArgs) = 0;
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eth-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
virtual bool Register(uint32_t prot_id, Handler * p_handler) = 0;
|
||||
|
||||
virtual ~EthStackIface() {};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp_client.cpp
|
||||
*
|
||||
* Created on: 15 пїЅпїЅпїЅ. 2023 пїЅ.
|
||||
* Created on: 15 апреля. 2023 год.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_udp_client.hpp"
|
||||
@ -189,7 +189,7 @@ uint16_t free_rtos::EthUpdClient::fill_udp_header(UDPHandlerArgs& udpHandlerArgs
|
||||
chk_sum32 += IP_PROT_UDP + udp_len;
|
||||
|
||||
//uint16_t chk_sum16 = eth_calcChksum2(chk_sum32, (uint8_t *)&udpHandlerArgs.udp_header, sizeof(TUdpHeader), (uint8_t *)udpHandlerArgs.p_data, udpHandlerArgs.ip_data_len);
|
||||
//Расчет контрольной суммы совмещен с копированием данных !
|
||||
//Расчет контрольной суммы совмещен с копированием данных !
|
||||
uint16_t chk_sum16 = eth_calcChksum3(udp_hdr, chk_sum32,
|
||||
&udp_header, sizeof(TUdpHeader),
|
||||
udpHandlerArgs.p_data, udpHandlerArgs.ip_data_len);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp_client.hpp
|
||||
*
|
||||
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 15 апр. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp.cpp
|
||||
*
|
||||
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 15 апр. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/ethernet_ip/eth_udp_server.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp.hpp
|
||||
*
|
||||
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 15 апр. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp_server_iface.hpp
|
||||
*
|
||||
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 15 апр. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_udp_types.h
|
||||
*
|
||||
* Created on: 15 ìàð. 2023 ã.
|
||||
* Created on: 15 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* gpio.cpp
|
||||
*
|
||||
* Created on: 6 ìàð. 2023 ã.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* gpio.hpp
|
||||
*
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
* Пины должны быть предварительно сконфигурированы в SysConfig в разделе GPIO
|
||||
* Пины должны быть предварительно сконфигурированы в SysConfig в разделе GPIO
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_GPIO_GPIO_HPP_
|
||||
@ -20,8 +20,8 @@ public:
|
||||
e_gpioDirInput
|
||||
};
|
||||
/*
|
||||
* num - номер пина
|
||||
* Dir - направление вход/выход
|
||||
* num - номер пина
|
||||
* Dir - направление вход/выход
|
||||
*/
|
||||
Gpio(uint32_t num, Dir dir, uint32_t base_address);
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* mutex.cpp
|
||||
*
|
||||
* Created on: 26 ñåíò. 2022 ã.
|
||||
* Created on: 26 сент. 2022 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/mutex/mutex.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* mutex.hpp
|
||||
*
|
||||
* Created on: 26 сент. 2022 г.
|
||||
* Created on: 26 сент. 2022 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
namespace free_rtos {
|
||||
|
||||
/**
|
||||
* @brief С++ обертка на мьютексом из ti rtos
|
||||
* @brief С++ обертка на мьютексом из ti rtos
|
||||
*
|
||||
*/
|
||||
class Mutex {
|
||||
@ -22,9 +22,9 @@ public:
|
||||
Mutex();
|
||||
|
||||
/**
|
||||
* wait - время ожидания в тиках, по умолчанию
|
||||
* portMAX_DELAY - ожидание бесконечно, 0 - ожидание отсутствует
|
||||
* Вызвращает pdTRUE если удалось получить семафор
|
||||
* wait - время ожидания в тиках, по умолчанию
|
||||
* portMAX_DELAY - ожидание бесконечно, 0 - ожидание отсутствует
|
||||
* Вызвращает pdTRUE если удалось получить семафор
|
||||
*/
|
||||
BaseType_t lock(TickType_t wait = portMAX_DELAY);
|
||||
|
||||
@ -37,7 +37,7 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Реализация паттерна LockGuard
|
||||
* @brief Реализация паттерна LockGuard
|
||||
*
|
||||
*/
|
||||
class LockGuard {
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
namespace free_rtos {
|
||||
|
||||
/**
|
||||
* @brief С++ обертка семафора в free rtos
|
||||
* @brief С++ обертка семафора в free rtos
|
||||
*
|
||||
*/
|
||||
class Semaphore {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* task.cpp
|
||||
*
|
||||
* Created on: 6 לאנ. 2023 ד.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/task/task.hpp"
|
||||
@ -18,7 +18,7 @@ bool free_rtos::Task::Create(std::string name, uint32_t priority, TaskFunction t
|
||||
stack_size_bytes = defStackSize_;
|
||||
}
|
||||
|
||||
/// <EFBFBD>עוך המכזום ב<>ע<EFBFBD> ג<>נמגםום ןמ דנאםטצו 32 באיעא
|
||||
/// Стек должен быть выровнен по границе 32 байта
|
||||
if (stack_size_bytes % 32) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/*
|
||||
* task.hpp
|
||||
*
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Author: sychev
|
||||
* Во FreeRtos есть два способа создать задачу:
|
||||
* xTaskCreate - стэк выделяется динамически при создании задачи
|
||||
* xTaskCreateStatic - стек выделяется статически
|
||||
* Данный модуль реализован на основе xTaskCreate
|
||||
* Во FreeRtos есть два способа создать задачу:
|
||||
* xTaskCreate - стэк выделяется динамически при создании задачи
|
||||
* xTaskCreateStatic - стек выделяется статически
|
||||
* Данный модуль реализован на основе xTaskCreate
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_TASK_TASK_HPP_
|
||||
@ -20,12 +20,12 @@
|
||||
|
||||
namespace free_rtos {
|
||||
/**
|
||||
* @brief Класс обертка реализующий создание задачи во free_rtos.
|
||||
* @brief Класс обертка реализующий создание задачи во free_rtos.
|
||||
*/
|
||||
class Task {
|
||||
public:
|
||||
/**
|
||||
* @brief Тип указателя на функцию задачи
|
||||
* @brief Тип указателя на функцию задачи
|
||||
*
|
||||
*/
|
||||
using TaskFunction = TaskFunction_t;
|
||||
@ -41,7 +41,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
static const uint32_t defStackSize_ = 8192; /// Размер стека по-умолчанию
|
||||
static const uint32_t defStackSize_ = 8192; /// Размер стека по-умолчанию
|
||||
|
||||
TaskHandle_t taskHandle_;
|
||||
};
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
/*
|
||||
* timer.cpp
|
||||
*
|
||||
* Created on: 10 ìàð. 2023 ã.
|
||||
* Created on: 10 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
#include "free_rtos/timer/timer.hpp"
|
||||
|
||||
#include <kernel/dpl/TimerP.h>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* timer.hpp
|
||||
*
|
||||
* Created on: 10 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Created on: 10 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -19,22 +19,18 @@ namespace free_rtos {
|
||||
class Timer {
|
||||
public:
|
||||
struct Settings {
|
||||
uint32_t input_clk_Hz; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>
|
||||
uint32_t base_address; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t clock_src_mux_addr; /// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t int_num; /// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t int_priority; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t period_us; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||||
uint32_t input_clk_Hz;
|
||||
uint32_t base_address;
|
||||
uint32_t clock_src_mux_addr;
|
||||
uint32_t int_num;
|
||||
uint32_t int_priority;
|
||||
uint32_t period_us;
|
||||
};
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
bool Init(Settings& sett);
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
*/
|
||||
|
||||
uint32_t Wait();
|
||||
|
||||
void Start();
|
||||
@ -48,9 +44,9 @@ private:
|
||||
friend void timer_isr_callback(void * arg);
|
||||
|
||||
private:
|
||||
uint32_t base_addr_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t int_num_; /// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
HwiP_Object hwi_obj_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t base_addr_;
|
||||
uint32_t int_num_;
|
||||
HwiP_Object hwi_obj_;
|
||||
|
||||
Semaphore sem_;
|
||||
uint32_t tick_counter_{0x00000000};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* timer_sw.cpp
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
#include "free_rtos/timer_sw/timer_sw.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* timer_sw.hpp
|
||||
*
|
||||
* Created on: 13 ìàð. 2023 ã.
|
||||
* Created on: 13 мар. 2023 г.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user