summaryrefslogtreecommitdiff
path: root/code
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2019-12-06 20:04:08 +0100
committerUros Majstorovic <majstor@majstor.org>2019-12-06 20:04:08 +0100
commit0bcbb62eb408e6fcbfe78fbc2756dfb1b9ae6a37 (patch)
tree8517595e723686fd8954f0640c5fc40c36e88a67 /code
parentbc37c471fbb233a2a17119091b10f7adf8045a95 (diff)
net refactor: alloc reverted to take void arg; EOS_NET_FLAGs renamed
Diffstat (limited to 'code')
-rw-r--r--code/ecp/fe310/time.c3
-rw-r--r--code/ecp/fe310/transport.c2
-rw-r--r--code/fe310/eos/event.c4
-rw-r--r--code/fe310/eos/evt_def.h2
-rw-r--r--code/fe310/eos/i2s.c3
-rw-r--r--code/fe310/eos/net.c18
-rw-r--r--code/fe310/eos/net.h23
-rw-r--r--code/fe310/eos/sock.c8
-rw-r--r--code/fe310/eos/wifi.c8
9 files changed, 36 insertions, 35 deletions
diff --git a/code/ecp/fe310/time.c b/code/ecp/fe310/time.c
index dee4285..a5c109d 100644
--- a/code/ecp/fe310/time.c
+++ b/code/ecp/fe310/time.c
@@ -2,6 +2,7 @@
#include <tr.h>
#include <eos/eos.h>
+#include <eos/net.h>
#include <eos/event.h>
#include <eos/timer.h>
@@ -18,7 +19,7 @@ static void timer_handler(unsigned char type) {
}
int ecp_tm_init(ECPContext *ctx) {
- eos_timer_set_handler(EOS_TIMER_ETYPE_ECP, timer_handler, EOS_EVT_FLAG_NET_BUF_ACQ);
+ eos_timer_set_handler(EOS_TIMER_ETYPE_ECP, timer_handler, EOS_NET_FLAG_BACQ);
return ECP_OK;
}
diff --git a/code/ecp/fe310/transport.c b/code/ecp/fe310/transport.c
index a49d3b6..6da5139 100644
--- a/code/ecp/fe310/transport.c
+++ b/code/ecp/fe310/transport.c
@@ -85,7 +85,7 @@ ssize_t ecp_tr_send(ECPSocket *sock, ECPBuffer *packet, size_t msg_size, ECPNetA
buf = packet->buffer-EOS_SOCK_SIZE_UDP_HDR;
packet->buffer = NULL;
} else {
- buf = eos_net_alloc(1);
+ buf = eos_net_alloc();
memcpy(buf+EOS_SOCK_SIZE_UDP_HDR, packet->buffer, msg_size);
}
}
diff --git a/code/fe310/eos/event.c b/code/fe310/eos/event.c
index cc9c5de..9371ca7 100644
--- a/code/fe310/eos/event.c
+++ b/code/fe310/eos/event.c
@@ -47,7 +47,7 @@ static void evtq_handler_wrapper(unsigned char type, unsigned char *buffer, uint
uint16_t flag = (uint16_t)1 << ((type & ~EOS_EVT_MASK) - 1);
int ok;
- ok = eos_net_acquire(evt_handler_wrapper_acq[idx] & flag);
+ ok = _eos_net_acquire(evt_handler_wrapper_acq[idx] & flag);
if (ok) {
evt_handler[idx](type, buffer, len);
eos_net_release();
@@ -83,7 +83,7 @@ void eos_evtq_set_flags(unsigned char type, uint8_t flags) {
unsigned char idx = ((type & EOS_EVT_MASK) >> 4) - 1;
uint16_t flag = type & ~EOS_EVT_MASK ? (uint16_t)1 << ((type & ~EOS_EVT_MASK) - 1) : 0xFFFF;
- if ((idx < EOS_EVT_MAX_EVT) && (flags & EOS_EVT_FLAG_NET_BUF_ACQ)) evt_handler_flags_buf_acq[idx] |= flag;
+ if ((idx < EOS_EVT_MAX_EVT) && (flags & EOS_NET_FLAG_BACQ)) evt_handler_flags_buf_acq[idx] |= flag;
}
void eos_evtq_get(unsigned char type, unsigned char *selector, uint16_t sel_len, unsigned char **buffer, uint16_t *len) {
diff --git a/code/fe310/eos/evt_def.h b/code/fe310/eos/evt_def.h
index ee08d7d..529ee72 100644
--- a/code/fe310/eos/evt_def.h
+++ b/code/fe310/eos/evt_def.h
@@ -1,5 +1,3 @@
-#define EOS_EVT_FLAG_NET_BUF_ACQ 0x1
-
#define EOS_EVT_TIMER 0x10
#define EOS_EVT_AUDIO 0x20
#define EOS_EVT_NET 0x30
diff --git a/code/fe310/eos/i2s.c b/code/fe310/eos/i2s.c
index 4c36d55..d71a31d 100644
--- a/code/fe310/eos/i2s.c
+++ b/code/fe310/eos/i2s.c
@@ -8,6 +8,7 @@
#include "eos.h"
#include "interrupt.h"
#include "event.h"
+#include "net.h"
#include "i2s.h"
#include "i2s_def.h"
@@ -114,7 +115,7 @@ extern void _eos_i2s_start_pwm(void);
void eos_i2s_init(void) {
eos_evtq_set_handler(EOS_EVT_AUDIO, i2s_handler_evt);
- eos_evtq_set_flags(EOS_EVT_AUDIO | I2S_ETYPE_MIC, EOS_EVT_FLAG_NET_BUF_ACQ);
+ eos_evtq_set_flags(EOS_EVT_AUDIO | I2S_ETYPE_MIC, EOS_NET_FLAG_BACQ);
GPIO_REG(GPIO_INPUT_EN) &= ~(1 << I2S_PIN_CK);
GPIO_REG(GPIO_OUTPUT_EN) |= (1 << I2S_PIN_CK);
diff --git a/code/fe310/eos/net.c b/code/fe310/eos/net.c
index 9f19b4b..319a3f5 100644
--- a/code/fe310/eos/net.c
+++ b/code/fe310/eos/net.c
@@ -237,8 +237,8 @@ void eos_net_set_handler(unsigned char mtype, eos_evt_fptr_t handler, uint8_t fl
}
if (flags) {
uint16_t flag = (uint16_t)1 << mtype;
- if (flags & EOS_NET_FLAG_BUF_FREE) evt_handler_flags_buf_free |= flag;
- if (flags & EOS_NET_FLAG_BUF_ACQ) evt_handler_flags_buf_acq |= flag;
+ if (flags & EOS_NET_FLAG_BFREE) evt_handler_flags_buf_free |= flag;
+ if (flags & EOS_NET_FLAG_BACQ) evt_handler_flags_buf_acq |= flag;
}
evt_handler[mtype] = handler;
}
@@ -298,7 +298,7 @@ void eos_net_stop(void) {
}
}
-int eos_net_acquire(unsigned char reserved) {
+int _eos_net_acquire(unsigned char reserved) {
int ret = 0;
if (reserved) {
@@ -322,6 +322,11 @@ int eos_net_acquire(unsigned char reserved) {
return ret;
}
+void eos_net_acquire(void) {
+ unsigned char acq = _eos_net_acquire(0);
+ if (!acq) _eos_net_acquire(1);
+}
+
void eos_net_release(void) {
clear_csr(mstatus, MSTATUS_MIE);
if (!net_state_next_cnt && net_state_next_buf) {
@@ -331,14 +336,9 @@ void eos_net_release(void) {
set_csr(mstatus, MSTATUS_MIE);
}
-unsigned char *eos_net_alloc(unsigned char acquired) {
+unsigned char *eos_net_alloc(void) {
unsigned char *ret = NULL;
- if (!acquired) {
- unsigned char acq = eos_net_acquire(0);
- if (!acq) eos_net_acquire(1);
- }
-
clear_csr(mstatus, MSTATUS_MIE);
ret = net_state_next_buf;
net_state_next_buf = NULL;
diff --git a/code/fe310/eos/net.h b/code/fe310/eos/net.h
index a68cd77..127942c 100644
--- a/code/fe310/eos/net.h
+++ b/code/fe310/eos/net.h
@@ -1,18 +1,18 @@
#include <stdint.h>
#include "event.h"
-#define EOS_NET_FLAG_BUF_FREE 0x1
-#define EOS_NET_FLAG_BUF_ACQ 0x2
+#define EOS_NET_FLAG_BACQ 0x1
+#define EOS_NET_FLAG_BFREE 0x2
-#define EOS_NET_MTYPE_SOCK 1
-#define EOS_NET_MTYPE_AUDIO 2
+#define EOS_NET_MTYPE_SOCK 1
+#define EOS_NET_MTYPE_AUDIO 2
-#define EOS_NET_MTYPE_WIFI 5
-#define EOS_NET_MTYPE_CELL 6
-#define EOS_NET_MTYPE_SIP 7
-#define EOS_NET_MTYPE_APP 8
+#define EOS_NET_MTYPE_WIFI 5
+#define EOS_NET_MTYPE_CELL 6
+#define EOS_NET_MTYPE_SIP 7
+#define EOS_NET_MTYPE_APP 8
-#define EOS_NET_MAX_MTYPE 8
+#define EOS_NET_MAX_MTYPE 8
void eos_net_xchg_done(void);
@@ -20,8 +20,9 @@ void eos_net_init(void);
void eos_net_start(void);
void eos_net_stop(void);
void eos_net_set_handler(unsigned char type, eos_evt_fptr_t handler, uint8_t flags);
-int eos_net_acquire(unsigned char reserved);
+int _eos_net_acquire(unsigned char reserved);
+void eos_net_acquire(void);
void eos_net_release(void);
-unsigned char *eos_net_alloc(unsigned char acquired);
+unsigned char *eos_net_alloc(void);
void eos_net_free(unsigned char *buffer, unsigned char more);
int eos_net_send(unsigned char type, unsigned char *buffer, uint16_t len, unsigned char more);
diff --git a/code/fe310/eos/sock.c b/code/fe310/eos/sock.c
index b690dc4..2c6ba5d 100644
--- a/code/fe310/eos/sock.c
+++ b/code/fe310/eos/sock.c
@@ -48,7 +48,7 @@ void eos_sock_init(void) {
int eos_sock_open_udp(void) {
unsigned char type = EOS_SOCK_MTYPE_OPEN_DGRAM;
- unsigned char *buffer = eos_net_alloc(1);
+ unsigned char *buffer = eos_net_alloc();
uint16_t buf_size;
int rv, sock;
@@ -70,7 +70,7 @@ int eos_sock_open_udp(void) {
}
void eos_sock_close(int sock) {
- unsigned char *buffer = eos_net_alloc(1);
+ unsigned char *buffer = eos_net_alloc();
buffer[0] = EOS_SOCK_MTYPE_CLOSE;
buffer[1] = sock;
eos_net_send(EOS_NET_MTYPE_SOCK, buffer, 2, 1);
@@ -100,8 +100,8 @@ void eos_sock_set_handler(int sock, eos_sock_fptr_t handler, uint8_t flags) {
}
if (flags) {
uint16_t flag = (uint16_t)1 << sock;
- if (flags & EOS_NET_FLAG_BUF_FREE) sock_handler_flags_buf_free |= flag;
- if (flags & EOS_NET_FLAG_BUF_ACQ) sock_handler_flags_buf_acq |= flag;
+ if (flags & EOS_NET_FLAG_BFREE) sock_handler_flags_buf_free |= flag;
+ if (flags & EOS_NET_FLAG_BACQ) sock_handler_flags_buf_acq |= flag;
}
sock_handler[sock] = handler;
}
diff --git a/code/fe310/eos/wifi.c b/code/fe310/eos/wifi.c
index 95fec7d..67682aa 100644
--- a/code/fe310/eos/wifi.c
+++ b/code/fe310/eos/wifi.c
@@ -46,7 +46,7 @@ void eos_wifi_init(void) {
void eos_wifi_connect(const char *ssid, const char *pass) {
int ssid_len = strlen(ssid);
int pass_len = strlen(pass);
- unsigned char *buffer = eos_net_alloc(0);
+ unsigned char *buffer = eos_net_alloc();
buffer[0] = EOS_WIFI_MTYPE_CONNECT;
strcpy(buffer+1, ssid);
@@ -57,7 +57,7 @@ void eos_wifi_connect(const char *ssid, const char *pass) {
}
void eos_wifi_disconnect(void) {
- unsigned char *buffer = eos_net_alloc(0);
+ unsigned char *buffer = eos_net_alloc();
buffer[0] = EOS_WIFI_MTYPE_DISCONNECT;
eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0);
}
@@ -69,8 +69,8 @@ void eos_wifi_set_handler(int mtype, eos_wifi_fptr_t handler, uint8_t flags) {
if (flags) {
uint16_t flag = (uint16_t)1 << mtype;
- if (flags & EOS_NET_FLAG_BUF_FREE) wifi_handler_flags_buf_free |= flag;
- if (flags & EOS_NET_FLAG_BUF_ACQ) wifi_handler_flags_buf_acq |= flag;
+ if (flags & EOS_NET_FLAG_BFREE) wifi_handler_flags_buf_free |= flag;
+ if (flags & EOS_NET_FLAG_BACQ) wifi_handler_flags_buf_acq |= flag;
}
wifi_handler[mtype] = handler;
}