Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Software for White Rabbit PTP Core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
32
Issues
32
List
Board
Labels
Milestones
Merge Requests
6
Merge Requests
6
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Software for White Rabbit PTP Core
Commits
bab6625f
Commit
bab6625f
authored
Nov 27, 2020
by
Tomasz Wlostowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dev/console: initial version of binary/textmode switch
parent
48a39be2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
27 deletions
+20
-27
console.c
dev/console.c
+20
-27
No files found.
dev/console.c
View file @
bab6625f
...
@@ -92,7 +92,7 @@ static int con_uart_put_string(struct console_device* dev, const char *s)
...
@@ -92,7 +92,7 @@ static int con_uart_put_string(struct console_device* dev, const char *s)
if
(
dev
->
flags
&
CONSOLE_FLAGS_MODE_BINARY
)
if
(
dev
->
flags
&
CONSOLE_FLAGS_MODE_BINARY
)
return
0
;
return
0
;
while
(
c
=
*
s
++
)
while
(
(
c
=
*
s
++
)
!=
0
)
{
{
if
(
(
dev
->
flags
&
CONSOLE_FLAGS_INSERT_CRLF
)
&&
c
==
'\n'
)
if
(
(
dev
->
flags
&
CONSOLE_FLAGS_INSERT_CRLF
)
&&
c
==
'\n'
)
suart_write_byte
(
&
priv
->
uart_dev
,
'\r'
);
suart_write_byte
(
&
priv
->
uart_dev
,
'\r'
);
...
@@ -106,8 +106,8 @@ static int con_uart_put_string(struct console_device* dev, const char *s)
...
@@ -106,8 +106,8 @@ static int con_uart_put_string(struct console_device* dev, const char *s)
static
int
con_uart_getc
(
struct
console_device
*
dev
)
static
int
con_uart_getc
(
struct
console_device
*
dev
)
{
{
//
if( dev->flags & CONSOLE_FLAGS_MODE_BINARY )
if
(
dev
->
flags
&
CONSOLE_FLAGS_MODE_BINARY
)
//
return 0;
return
0
;
return
con_rx_internal
(
dev
);
return
con_rx_internal
(
dev
);
}
}
...
@@ -204,6 +204,7 @@ static inline int rbuf_full(struct ring_buffer *buf)
...
@@ -204,6 +204,7 @@ static inline int rbuf_full(struct ring_buffer *buf)
static
inline
int
rbuf_purge
(
struct
ring_buffer
*
buf
)
static
inline
int
rbuf_purge
(
struct
ring_buffer
*
buf
)
{
{
buf
->
head
=
buf
->
tail
=
buf
->
count
=
0
;
buf
->
head
=
buf
->
tail
=
buf
->
count
=
0
;
return
0
;
}
}
...
@@ -211,7 +212,7 @@ static int con_ipmi_put_string(struct console_device* dev, const char *s)
...
@@ -211,7 +212,7 @@ static int con_ipmi_put_string(struct console_device* dev, const char *s)
{
{
struct
console_ipmi_priv_data
*
priv
=
(
struct
console_ipmi_priv_data
*
)
dev
->
priv
;
struct
console_ipmi_priv_data
*
priv
=
(
struct
console_ipmi_priv_data
*
)
dev
->
priv
;
int
c
,
n
=
0
;
int
c
,
n
=
0
;
while
(
c
=
*
s
++
)
while
(
(
c
=
*
s
++
)
!=
0
)
{
{
rbuf_put
(
&
priv
->
tx_buf
,
c
);
rbuf_put
(
&
priv
->
tx_buf
,
c
);
n
++
;
n
++
;
...
@@ -234,7 +235,6 @@ int console_ipmi_process_request(struct console_device* dev, uint8_t *req, int
...
@@ -234,7 +235,6 @@ int console_ipmi_process_request(struct console_device* dev, uint8_t *req, int
struct
console_ipmi_priv_data
*
priv
=
(
struct
console_ipmi_priv_data
*
)
dev
->
priv
;
struct
console_ipmi_priv_data
*
priv
=
(
struct
console_ipmi_priv_data
*
)
dev
->
priv
;
int
i
;
int
i
;
int
cnt
=
priv
->
tx_buf
.
count
;
for
(
i
=
0
;
i
<
size
;
i
++
)
for
(
i
=
0
;
i
<
size
;
i
++
)
{
{
...
@@ -259,13 +259,13 @@ int console_ipmi_process_request(struct console_device* dev, uint8_t *req, int
...
@@ -259,13 +259,13 @@ int console_ipmi_process_request(struct console_device* dev, uint8_t *req, int
return
i
;
return
i
;
}
}
void
console_ipmi_init
(
)
void
console_ipmi_init
(
void
)
{
{
console_ipmi_dev
.
priv
=
&
console_ipmi_priv
;
console_ipmi_dev
.
priv
=
&
console_ipmi_priv
;
console_ipmi_dev
.
get_char
=
con_ipmi_getc
;
console_ipmi_dev
.
get_char
=
con_ipmi_getc
;
console_ipmi_dev
.
put_string
=
con_ipmi_put_string
;
console_ipmi_dev
.
put_string
=
con_ipmi_put_string
;
rbuf_init
(
&
console_ipmi_priv
.
rx_buf
,
IPMI_CON_RX_BUF_SIZE
,
&
console_ipmi_priv
.
rx_buf_mem
);
rbuf_init
(
&
console_ipmi_priv
.
rx_buf
,
IPMI_CON_RX_BUF_SIZE
,
console_ipmi_priv
.
rx_buf_mem
);
rbuf_init
(
&
console_ipmi_priv
.
tx_buf
,
IPMI_CON_TX_BUF_SIZE
,
&
console_ipmi_priv
.
tx_buf_mem
);
rbuf_init
(
&
console_ipmi_priv
.
tx_buf
,
IPMI_CON_TX_BUF_SIZE
,
console_ipmi_priv
.
tx_buf_mem
);
console_register_device
(
&
console_ipmi_dev
);
console_register_device
(
&
console_ipmi_dev
);
}
}
...
@@ -351,44 +351,37 @@ int console_get_mode( struct console_device *dev )
...
@@ -351,44 +351,37 @@ int console_get_mode( struct console_device *dev )
return
dev
->
flags
&
(
CONSOLE_FLAGS_MODE_BINARY
|
CONSOLE_FLAGS_MODE_TTY
);
return
dev
->
flags
&
(
CONSOLE_FLAGS_MODE_BINARY
|
CONSOLE_FLAGS_MODE_TTY
);
}
}
int
console_binary_send
(
struct
console_device
*
dev
,
void
*
buf
,
int
size
)
int
console_binary_send
_byte
(
struct
console_device
*
dev
,
uint8_t
b
)
{
{
struct
console_uart_priv_data
*
priv
=
(
struct
console_uart_priv_data
*
)
dev
->
priv
;
struct
console_uart_priv_data
*
priv
=
(
struct
console_uart_priv_data
*
)
dev
->
priv
;
if
(
dev
->
flags
&
CONSOLE_FLAGS_MODE_TTY
)
return
0
;
int
has_fifo
=
suart_is_fifo_supported
(
&
priv
->
uart_dev
);
int
has_fifo
=
suart_is_fifo_supported
(
&
priv
->
uart_dev
);
if
(
!
has_fifo
)
if
(
!
has_fifo
)
return
-
ENODEV
;
return
-
ENODEV
;
// fixme: FIFO threshold check?
suart_write_byte
(
&
priv
->
uart_dev
,
b
);
uint8_t
*
ptr
=
(
uint8_t
*
)
buf
;
int
i
;
for
(
i
=
0
;
i
<
size
;
i
++
)
suart_write_byte
(
&
priv
->
uart_dev
,
ptr
[
i
]
);
return
size
;
return
0
;
}
}
int
console_binary_recv
(
struct
console_device
*
dev
,
void
*
buf
,
int
size
)
int
console_binary_recv
_byte
(
struct
console_device
*
dev
)
{
{
struct
console_uart_priv_data
*
priv
=
(
struct
console_uart_priv_data
*
)
dev
->
priv
;
struct
console_uart_priv_data
*
priv
=
(
struct
console_uart_priv_data
*
)
dev
->
priv
;
if
(
dev
->
flags
&
CONSOLE_FLAGS_MODE_TTY
)
return
-
1
;
int
has_fifo
=
suart_is_fifo_supported
(
&
priv
->
uart_dev
);
int
has_fifo
=
suart_is_fifo_supported
(
&
priv
->
uart_dev
);
if
(
!
has_fifo
)
if
(
!
has_fifo
)
return
-
ENODEV
;
return
-
ENODEV
;
int
rx_count
=
suart_poll
(
&
priv
->
uart_dev
);
int
rx_byte
=
con_rx_internal
(
dev
);
if
(
rx_count
<
size
)
return
-
EAGAIN
;
uint8_t
*
ptr
=
(
uint8_t
*
)
buf
;
int
i
;
for
(
i
=
0
;
i
<
size
;
i
++
)
ptr
[
i
]
=
suart_read_byte
(
&
priv
->
uart_dev
);
return
siz
e
;
return
rx_byt
e
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment