Replace raw uint8_t constants with enum class types, move internal constants to cpp
This commit is contained in:
@@ -225,6 +225,9 @@ void wizchip_pio_write(uint8_t opcode, uint16_t addr, uint8_t* buf, uint16_t len
|
|||||||
pio_sm_set_enabled(state.pio, state.pio_sm, false);
|
pio_sm_set_enabled(state.pio, state.pio_sm, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using iodata_t = uint8_t;
|
||||||
|
using datasize_t = int16_t;
|
||||||
|
|
||||||
constexpr int _WIZCHIP_ = 6300;
|
constexpr int _WIZCHIP_ = 6300;
|
||||||
constexpr uint8_t _WIZCHIP_QSPI_MODE_ = 0x02 << 6;
|
constexpr uint8_t _WIZCHIP_QSPI_MODE_ = 0x02 << 6;
|
||||||
constexpr int _SOCK_COUNT_ = SOCK_COUNT;
|
constexpr int _SOCK_COUNT_ = SOCK_COUNT;
|
||||||
@@ -233,6 +236,37 @@ constexpr uint16_t _PHY_IO_MODE_PHYCR_ = 0x0000;
|
|||||||
constexpr uint16_t _PHY_IO_MODE_MII_ = 0x0010;
|
constexpr uint16_t _PHY_IO_MODE_MII_ = 0x0010;
|
||||||
constexpr uint16_t _PHY_IO_MODE_ = _PHY_IO_MODE_MII_;
|
constexpr uint16_t _PHY_IO_MODE_ = _PHY_IO_MODE_MII_;
|
||||||
|
|
||||||
|
constexpr uint8_t SYS_CHIP_LOCK = (1 << 2);
|
||||||
|
constexpr uint8_t SYS_NET_LOCK = (1 << 1);
|
||||||
|
constexpr uint8_t SYS_PHY_LOCK = (1 << 0);
|
||||||
|
|
||||||
|
constexpr uint8_t PHY_MODE_MANUAL = 0;
|
||||||
|
constexpr uint8_t PHY_MODE_AUTONEGO = 1;
|
||||||
|
constexpr uint8_t PHY_MODE_TE = 2;
|
||||||
|
constexpr uint8_t PHY_CONFBY_HW = 0;
|
||||||
|
constexpr uint8_t PHY_CONFBY_SW = 1;
|
||||||
|
constexpr uint8_t PHY_SPEED_10 = 0;
|
||||||
|
constexpr uint8_t PHY_SPEED_100 = 1;
|
||||||
|
constexpr uint8_t PHY_DUPLEX_HALF = 0;
|
||||||
|
constexpr uint8_t PHY_DUPLEX_FULL = 1;
|
||||||
|
constexpr uint8_t PHY_LINK_OFF = 0;
|
||||||
|
constexpr uint8_t PHY_LINK_ON = 1;
|
||||||
|
constexpr uint8_t PHY_POWER_NORM = 0;
|
||||||
|
constexpr uint8_t PHY_POWER_DOWN = 1;
|
||||||
|
|
||||||
|
constexpr uint8_t PACK_NONE = static_cast<uint8_t>(pack_info::none);
|
||||||
|
constexpr uint8_t PACK_FIRST = static_cast<uint8_t>(pack_info::first);
|
||||||
|
constexpr uint8_t PACK_REMAINED = static_cast<uint8_t>(pack_info::remained);
|
||||||
|
constexpr uint8_t PACK_COMPLETED = static_cast<uint8_t>(pack_info::completed);
|
||||||
|
constexpr uint8_t PACK_IPv6 = static_cast<uint8_t>(pack_info::ipv6);
|
||||||
|
|
||||||
|
constexpr uint8_t SOCK_IO_BLOCK = static_cast<uint8_t>(sock_io_mode::block);
|
||||||
|
constexpr uint8_t SOCK_IO_NONBLOCK = static_cast<uint8_t>(sock_io_mode::nonblock);
|
||||||
|
|
||||||
|
constexpr uint8_t TCPSOCK_MODE = static_cast<uint8_t>(tcp_sock_info::mode);
|
||||||
|
constexpr uint8_t TCPSOCK_OP = static_cast<uint8_t>(tcp_sock_info::op);
|
||||||
|
constexpr uint8_t TCPSOCK_SIP = static_cast<uint8_t>(tcp_sock_info::sip);
|
||||||
|
|
||||||
constexpr uint8_t W6300_SPI_READ = (0x00 << 5);
|
constexpr uint8_t W6300_SPI_READ = (0x00 << 5);
|
||||||
constexpr uint8_t W6300_SPI_WRITE = (0x01 << 5);
|
constexpr uint8_t W6300_SPI_WRITE = (0x01 << 5);
|
||||||
|
|
||||||
@@ -1261,12 +1295,14 @@ uint8_t sock_pack_info[_SOCK_COUNT_] = {0,};
|
|||||||
#define CHECK_SOCKDATA() do { if(len == 0) return SOCKERR_DATALEN; } while(0)
|
#define CHECK_SOCKDATA() do { if(len == 0) return SOCKERR_DATALEN; } while(0)
|
||||||
#define CHECK_IPZERO(addr, addrlen) do { uint16_t ipzero=0; for(uint8_t i=0; i<addrlen; i++) ipzero += (uint16_t)addr[i]; if(ipzero == 0) return SOCKERR_IPINVALID; } while(0)
|
#define CHECK_IPZERO(addr, addrlen) do { uint16_t ipzero=0; for(uint8_t i=0; i<addrlen; i++) ipzero += (uint16_t)addr[i]; if(ipzero == 0) return SOCKERR_IPINVALID; } while(0)
|
||||||
|
|
||||||
int8_t open_socket(socket_id sid, uint8_t protocol, port_num port, uint8_t flag) {
|
int8_t open_socket(socket_id sid, protocol proto, port_num port, sock_flag flag) {
|
||||||
uint8_t sn = static_cast<uint8_t>(sid);
|
uint8_t sn = static_cast<uint8_t>(sid);
|
||||||
uint16_t p = static_cast<uint16_t>(port);
|
uint16_t p = static_cast<uint16_t>(port);
|
||||||
|
uint8_t pr = static_cast<uint8_t>(proto);
|
||||||
|
uint8_t fl = static_cast<uint8_t>(flag);
|
||||||
uint8_t taddr[16];
|
uint8_t taddr[16];
|
||||||
CHECK_SOCKNUM();
|
CHECK_SOCKNUM();
|
||||||
switch (protocol & 0x0F) {
|
switch (pr & 0x0F) {
|
||||||
case Sn_MR_TCP4:
|
case Sn_MR_TCP4:
|
||||||
getSIPR(taddr);
|
getSIPR(taddr);
|
||||||
CHECK_IPZERO(taddr, 4);
|
CHECK_IPZERO(taddr, 4);
|
||||||
@@ -1291,29 +1327,29 @@ int8_t open_socket(socket_id sid, uint8_t protocol, port_num port, uint8_t flag)
|
|||||||
default:
|
default:
|
||||||
return SOCKERR_SOCKMODE;
|
return SOCKERR_SOCKMODE;
|
||||||
}
|
}
|
||||||
if ((flag & 0x04) != 0) return SOCKERR_SOCKFLAG;
|
if ((fl & 0x04) != 0) return SOCKERR_SOCKFLAG;
|
||||||
|
|
||||||
if (flag != 0) {
|
if (fl != 0) {
|
||||||
switch (protocol) {
|
switch (pr) {
|
||||||
case Sn_MR_MACRAW:
|
case Sn_MR_MACRAW:
|
||||||
if ((flag & (SF_DHA_MANUAL | SF_FORCE_ARP)) != 0) return SOCKERR_SOCKFLAG;
|
if ((fl & (Sn_MR2_DHAM | Sn_MR2_FARP)) != 0) return SOCKERR_SOCKFLAG;
|
||||||
break;
|
break;
|
||||||
case Sn_MR_TCP4:
|
case Sn_MR_TCP4:
|
||||||
case Sn_MR_TCP6:
|
case Sn_MR_TCP6:
|
||||||
case Sn_MR_TCPD:
|
case Sn_MR_TCPD:
|
||||||
if ((flag & (SF_MULTI_ENABLE | SF_UNI_BLOCK)) != 0) return SOCKERR_SOCKFLAG;
|
if ((fl & (Sn_MR_MULTI | Sn_MR_UNIB)) != 0) return SOCKERR_SOCKFLAG;
|
||||||
break;
|
break;
|
||||||
case Sn_MR_IPRAW4:
|
case Sn_MR_IPRAW4:
|
||||||
case Sn_MR_IPRAW6:
|
case Sn_MR_IPRAW6:
|
||||||
if (flag != 0) return SOCKERR_SOCKFLAG;
|
if (fl != 0) return SOCKERR_SOCKFLAG;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(sid);
|
close(sid);
|
||||||
setSn_MR(sn, (protocol | (flag & 0xF0)));
|
setSn_MR(sn, (pr | (fl & 0xF0)));
|
||||||
setSn_MR2(sn, flag & 0x03);
|
setSn_MR2(sn, fl & 0x03);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
p = sock_any_port++;
|
p = sock_any_port++;
|
||||||
if (sock_any_port == 0xFFF0) sock_any_port = SOCK_ANY_PORT_NUM;
|
if (sock_any_port == 0xFFF0) sock_any_port = SOCK_ANY_PORT_NUM;
|
||||||
@@ -1322,10 +1358,10 @@ int8_t open_socket(socket_id sid, uint8_t protocol, port_num port, uint8_t flag)
|
|||||||
setSn_CR(sn, Sn_CR_OPEN);
|
setSn_CR(sn, Sn_CR_OPEN);
|
||||||
while (getSn_CR(sn));
|
while (getSn_CR(sn));
|
||||||
sock_io_mode &= ~(1 << sn);
|
sock_io_mode &= ~(1 << sn);
|
||||||
sock_io_mode |= ((flag & (SF_IO_NONBLOCK >> 3)) << sn);
|
sock_io_mode |= ((fl & (static_cast<uint8_t>(sock_flag::io_nonblock) >> 3)) << sn);
|
||||||
sock_is_sending &= ~(1 << sn);
|
sock_is_sending &= ~(1 << sn);
|
||||||
sock_remained_size[sn] = 0;
|
sock_remained_size[sn] = 0;
|
||||||
sock_pack_info[sn] = PACK_COMPLETED;
|
sock_pack_info[sn] = static_cast<uint8_t>(pack_info::completed);
|
||||||
while (getSn_SR(sn) == SOCK_CLOSED);
|
while (getSn_SR(sn) == SOCK_CLOSED);
|
||||||
return (int8_t)sn;
|
return (int8_t)sn;
|
||||||
}
|
}
|
||||||
|
|||||||
115
w6300/w6300.h
115
w6300/w6300.h
@@ -39,23 +39,6 @@ enum intr_kind : uint32_t {
|
|||||||
IK_INT_ALL = 0x00FFFF97
|
IK_INT_ALL = 0x00FFFF97
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr uint8_t SYS_CHIP_LOCK = (1 << 2);
|
|
||||||
constexpr uint8_t SYS_NET_LOCK = (1 << 1);
|
|
||||||
constexpr uint8_t SYS_PHY_LOCK = (1 << 0);
|
|
||||||
|
|
||||||
constexpr uint8_t PHY_MODE_MANUAL = 0;
|
|
||||||
constexpr uint8_t PHY_MODE_AUTONEGO = 1;
|
|
||||||
constexpr uint8_t PHY_MODE_TE = 2;
|
|
||||||
constexpr uint8_t PHY_CONFBY_HW = 0;
|
|
||||||
constexpr uint8_t PHY_CONFBY_SW = 1;
|
|
||||||
constexpr uint8_t PHY_SPEED_10 = 0;
|
|
||||||
constexpr uint8_t PHY_SPEED_100 = 1;
|
|
||||||
constexpr uint8_t PHY_DUPLEX_HALF = 0;
|
|
||||||
constexpr uint8_t PHY_DUPLEX_FULL = 1;
|
|
||||||
constexpr uint8_t PHY_LINK_OFF = 0;
|
|
||||||
constexpr uint8_t PHY_LINK_ON = 1;
|
|
||||||
constexpr uint8_t PHY_POWER_NORM = 0;
|
|
||||||
constexpr uint8_t PHY_POWER_DOWN = 1;
|
|
||||||
|
|
||||||
struct phy_conf {
|
struct phy_conf {
|
||||||
uint8_t by;
|
uint8_t by;
|
||||||
@@ -169,9 +152,6 @@ void init();
|
|||||||
bool check();
|
bool check();
|
||||||
void init_net(net_info info);
|
void init_net(net_info info);
|
||||||
|
|
||||||
using iodata_t = uint8_t;
|
|
||||||
using datasize_t = int16_t;
|
|
||||||
|
|
||||||
constexpr int16_t SOCK_OK = 1;
|
constexpr int16_t SOCK_OK = 1;
|
||||||
constexpr int16_t SOCK_BUSY = 0;
|
constexpr int16_t SOCK_BUSY = 0;
|
||||||
constexpr int16_t SOCK_FATAL = -1000;
|
constexpr int16_t SOCK_FATAL = -1000;
|
||||||
@@ -191,41 +171,76 @@ constexpr int16_t SOCKERR_DATALEN = SOCK_ERROR - 14;
|
|||||||
constexpr int16_t SOCKERR_BUFFER = SOCK_ERROR - 15;
|
constexpr int16_t SOCKERR_BUFFER = SOCK_ERROR - 15;
|
||||||
constexpr int16_t SOCKFATAL_PACKLEN = SOCK_FATAL - 1;
|
constexpr int16_t SOCKFATAL_PACKLEN = SOCK_FATAL - 1;
|
||||||
|
|
||||||
constexpr uint8_t SF_MULTI_ENABLE = 1 << 7;
|
enum class protocol : uint8_t {
|
||||||
constexpr uint8_t SF_ETHER_OWN = 1 << 7;
|
tcp = 0x01,
|
||||||
constexpr uint8_t SF_BROAD_BLOCK = 1 << 6;
|
udp = 0x02,
|
||||||
constexpr uint8_t SF_TCP_FPSH = 1 << 6;
|
ipraw = 0x03,
|
||||||
constexpr uint8_t SF_TCP_NODELAY = 1 << 5;
|
macraw = 0x07,
|
||||||
constexpr uint8_t SF_IGMP_VER2 = 1 << 5;
|
tcp6 = 0x09,
|
||||||
constexpr uint8_t SF_SOLICIT_BLOCK = 1 << 5;
|
udp6 = 0x0A,
|
||||||
constexpr uint8_t SF_ETHER_MULTI4B = 1 << 5;
|
ipraw6 = 0x0B,
|
||||||
constexpr uint8_t SF_UNI_BLOCK = 1 << 4;
|
tcp_dual = 0x0D,
|
||||||
constexpr uint8_t SF_ETHER_MULIT6B = 1 << 4;
|
udp_dual = 0x0E,
|
||||||
constexpr uint8_t SF_FORCE_ARP = 1 << 0;
|
};
|
||||||
constexpr uint8_t SF_DHA_MANUAL = 1 << 1;
|
|
||||||
constexpr uint8_t SF_IO_NONBLOCK = 1 << 3;
|
|
||||||
|
|
||||||
constexpr uint8_t PACK_IPv6 = 1 << 7;
|
enum class sock_flag : uint8_t {
|
||||||
constexpr uint8_t PACK_IPV6_ALLNODE = PACK_IPv6 | (1 << 6);
|
none = 0,
|
||||||
constexpr uint8_t PACK_IPV6_MULTI = PACK_IPv6 | (1 << 5);
|
multi_enable = 1 << 7,
|
||||||
constexpr uint8_t PACK_IPV6_LLA = PACK_IPv6 | (1 << 4);
|
ether_own = 1 << 7,
|
||||||
constexpr uint8_t PACK_COMPLETED = 1 << 3;
|
broad_block = 1 << 6,
|
||||||
constexpr uint8_t PACK_REMAINED = 1 << 2;
|
tcp_fpsh = 1 << 6,
|
||||||
constexpr uint8_t PACK_FIRST = 1 << 1;
|
tcp_nodelay = 1 << 5,
|
||||||
constexpr uint8_t PACK_NONE = 0x00;
|
igmp_ver2 = 1 << 5,
|
||||||
|
solicit_block = 1 << 5,
|
||||||
|
ether_multi4b = 1 << 5,
|
||||||
|
uni_block = 1 << 4,
|
||||||
|
ether_multi6b = 1 << 4,
|
||||||
|
force_arp = 1 << 0,
|
||||||
|
dha_manual = 1 << 1,
|
||||||
|
io_nonblock = 1 << 3,
|
||||||
|
};
|
||||||
|
constexpr sock_flag operator|(sock_flag a, sock_flag b) {
|
||||||
|
return static_cast<sock_flag>(static_cast<uint8_t>(a) | static_cast<uint8_t>(b));
|
||||||
|
}
|
||||||
|
constexpr uint8_t operator&(sock_flag a, sock_flag b) {
|
||||||
|
return static_cast<uint8_t>(a) & static_cast<uint8_t>(b);
|
||||||
|
}
|
||||||
|
|
||||||
constexpr uint8_t SRCV6_PREFER_AUTO = 0x00;
|
enum class pack_info : uint8_t {
|
||||||
constexpr uint8_t SRCV6_PREFER_LLA = 0x02;
|
none = 0x00,
|
||||||
constexpr uint8_t SRCV6_PREFER_GUA = 0x03;
|
first = 1 << 1,
|
||||||
|
remained = 1 << 2,
|
||||||
|
completed = 1 << 3,
|
||||||
|
ipv6_lla = (1 << 7) | (1 << 4),
|
||||||
|
ipv6_multi = (1 << 7) | (1 << 5),
|
||||||
|
ipv6_allnode = (1 << 7) | (1 << 6),
|
||||||
|
ipv6 = 1 << 7,
|
||||||
|
};
|
||||||
|
constexpr pack_info operator|(pack_info a, pack_info b) {
|
||||||
|
return static_cast<pack_info>(static_cast<uint8_t>(a) | static_cast<uint8_t>(b));
|
||||||
|
}
|
||||||
|
constexpr uint8_t operator&(pack_info a, pack_info b) {
|
||||||
|
return static_cast<uint8_t>(a) & static_cast<uint8_t>(b);
|
||||||
|
}
|
||||||
|
|
||||||
constexpr uint8_t TCPSOCK_MODE = 1 << 2;
|
enum class srcv6_prefer : uint8_t {
|
||||||
constexpr uint8_t TCPSOCK_OP = 1 << 1;
|
auto_select = 0x00,
|
||||||
constexpr uint8_t TCPSOCK_SIP = 1 << 0;
|
lla = 0x02,
|
||||||
|
gua = 0x03,
|
||||||
|
};
|
||||||
|
|
||||||
constexpr uint8_t SOCK_IO_BLOCK = 0;
|
enum class tcp_sock_info : uint8_t {
|
||||||
constexpr uint8_t SOCK_IO_NONBLOCK = 1;
|
mode = 1 << 2,
|
||||||
|
op = 1 << 1,
|
||||||
|
sip = 1 << 0,
|
||||||
|
};
|
||||||
|
|
||||||
int8_t open_socket(socket_id sn, uint8_t protocol, port_num port, uint8_t flag);
|
enum class sock_io_mode : uint8_t {
|
||||||
|
block = 0,
|
||||||
|
nonblock = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
int8_t open_socket(socket_id sn, protocol proto, port_num port, sock_flag flag);
|
||||||
int8_t close(socket_id sn);
|
int8_t close(socket_id sn);
|
||||||
int8_t listen(socket_id sn);
|
int8_t listen(socket_id sn);
|
||||||
int8_t disconnect(socket_id sn);
|
int8_t disconnect(socket_id sn);
|
||||||
|
|||||||
Reference in New Issue
Block a user