Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常顺宇
OpenXG-RAN
Commits
e6daacf7
Commit
e6daacf7
authored
Jul 22, 2016
by
Frédéric Leroy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE/API/USER: move _user_api_*_buffer to user_api_id_t
parent
a99e1a95
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
49 deletions
+34
-49
openair3/NAS/UE/API/USER/user_api.c
openair3/NAS/UE/API/USER/user_api.c
+24
-44
openair3/NAS/UE/API/USER/user_api.h
openair3/NAS/UE/API/USER/user_api.h
+2
-2
openair3/NAS/UE/API/USER/user_api_defs.h
openair3/NAS/UE/API/USER/user_api_defs.h
+6
-1
openair3/NAS/UE/nas_user.c
openair3/NAS/UE/nas_user.c
+2
-2
No files found.
openair3/NAS/UE/API/USER/user_api.c
View file @
e6daacf7
...
...
@@ -75,20 +75,6 @@ static int _user_api_pdn_connection_handler(user_api_id_t *user_api_id, unsigned
static
int
_user_api_send
(
user_api_id_t
*
user_api_id
,
at_response_t
*
data
);
/*
* The buffer used to receive data from the user application layer
*/
#define USER_API_RECV_BUFFER_SIZE 4096
// FIXME not reentrant
static
char
_user_api_recv_buffer
[
USER_API_RECV_BUFFER_SIZE
];
/*
* The buffer used to send data to the user application layer
*/
#define USER_API_SEND_BUFFER_SIZE USER_API_RECV_BUFFER_SIZE
// FIXME not reentrant
static
char
_user_api_send_buffer
[
USER_API_SEND_BUFFER_SIZE
];
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
...
...
@@ -115,7 +101,7 @@ int user_api_initialize(user_api_id_t *user_api_id, const char* host, const char
{
LOG_FUNC_IN
;
gethostname
(
_user_api_
send_buffer
,
USER_API_SEND_BUFFER_SIZE
);
gethostname
(
user_api_id
->
send_buffer
,
USER_API_SEND_BUFFER_SIZE
);
if
(
devname
!=
NULL
)
{
/* Initialize device handlers */
...
...
@@ -135,7 +121,7 @@ int user_api_initialize(user_api_id_t *user_api_id, const char* host, const char
}
LOG_TRACE
(
INFO
,
"USR-API - User's communication device %d is OPENED "
"on %s/%s"
,
user_api_get_fd
(
user_api_id
),
_user_api_
send_buffer
,
devname
);
"on %s/%s"
,
user_api_get_fd
(
user_api_id
),
user_api_id
->
send_buffer
,
devname
);
}
else
{
/* Initialize network socket handlers */
user_api_id
->
open
=
socket_udp_open
;
...
...
@@ -156,7 +142,7 @@ int user_api_initialize(user_api_id_t *user_api_id, const char* host, const char
}
LOG_TRACE
(
INFO
,
"USR-API - User's UDP socket %d is BOUND to %s/%s"
,
user_api_get_fd
(
user_api_id
),
_user_api_
send_buffer
,
port
);
user_api_get_fd
(
user_api_id
),
user_api_id
->
send_buffer
,
port
);
}
/* Register the asynchronous notification handlers */
...
...
@@ -245,7 +231,7 @@ const void* user_api_get_data(user_at_commands_t *commands, int index)
** **
** Outputs: Return: The number of bytes read when success; **
** RETURNerror Otherwise **
** Others:
_user_api_
recv_buffer, _user_api_id **
** Others:
user_api_id->
recv_buffer, _user_api_id **
** **
***************************************************************************/
int
user_api_read_data
(
user_api_id_t
*
user_api_id
,
int
fd
)
...
...
@@ -262,10 +248,10 @@ int user_api_read_data(user_api_id_t *user_api_id, int fd)
LOG_FUNC_RETURN
(
RETURNerror
);
}
memset
(
_user_api_
recv_buffer
,
0
,
USER_API_RECV_BUFFER_SIZE
);
memset
(
user_api_id
->
recv_buffer
,
0
,
USER_API_RECV_BUFFER_SIZE
);
/* Receive data from the user application layer */
rbytes
=
user_api_id
->
recv
(
user_api_id
->
endpoint
,
_user_api_
recv_buffer
,
USER_API_RECV_BUFFER_SIZE
);
rbytes
=
user_api_id
->
recv
(
user_api_id
->
endpoint
,
user_api_id
->
recv_buffer
,
USER_API_RECV_BUFFER_SIZE
);
if
(
rbytes
==
RETURNerror
)
{
LOG_TRACE
(
ERROR
,
"USR-API - recv() failed, %s"
,
strerror
(
errno
));
...
...
@@ -275,7 +261,7 @@ int user_api_read_data(user_api_id_t *user_api_id, int fd)
}
else
{
LOG_TRACE
(
INFO
,
"USR-API - %d bytes received "
"from the user application layer"
,
rbytes
);
LOG_DUMP
(
_user_api_
recv_buffer
,
rbytes
);
LOG_DUMP
(
user_api_id
->
recv_buffer
,
rbytes
);
}
LOG_FUNC_RETURN
(
rbytes
);
...
...
@@ -291,22 +277,22 @@ int user_api_read_data(user_api_id_t *user_api_id, int fd)
** **
** Outputs: Return: The number of bytes write when success; **
** RETURNerror Otherwise **
** Others:
_user_api_
recv_buffer **
** Others:
user_api_id->
recv_buffer **
** **
***************************************************************************/
int
user_api_set_data
(
char
*
message
)
int
user_api_set_data
(
user_api_id_t
*
user_api_id
,
char
*
message
)
{
LOG_FUNC_IN
;
int
rbytes
;
memset
(
_user_api_
recv_buffer
,
0
,
USER_API_RECV_BUFFER_SIZE
);
memset
(
user_api_id
->
recv_buffer
,
0
,
USER_API_RECV_BUFFER_SIZE
);
strncpy
(
_user_api_
recv_buffer
,
message
,
USER_API_RECV_BUFFER_SIZE
);
rbytes
=
strlen
(
_user_api_
recv_buffer
);
strncpy
(
user_api_id
->
recv_buffer
,
message
,
USER_API_RECV_BUFFER_SIZE
);
rbytes
=
strlen
(
user_api_id
->
recv_buffer
);
LOG_TRACE
(
INFO
,
"USR-API - %d bytes write"
,
rbytes
);
LOG_DUMP
(
_user_api_
recv_buffer
,
rbytes
);
LOG_DUMP
(
user_api_id
->
recv_buffer
,
rbytes
);
LOG_FUNC_RETURN
(
rbytes
);
}
...
...
@@ -320,7 +306,6 @@ int user_api_set_data(char *message)
** Inputs: fd: File descriptor of the connection endpoint **
** to which data have to be sent **
** length: Number of bytes to send **
** Others: _user_api_send_buffer, _user_api_id **
** **
** Outputs: Return: The number of bytes sent when success; **
** RETURNerror Otherwise **
...
...
@@ -329,7 +314,7 @@ int user_api_set_data(char *message)
***************************************************************************/
static
int
_user_api_send_data
(
user_api_id_t
*
user_api_id
,
int
length
)
{
int
sbytes
=
user_api_id
->
send
(
user_api_id
->
endpoint
,
_user_api_
send_buffer
,
length
);
int
sbytes
=
user_api_id
->
send
(
user_api_id
->
endpoint
,
user_api_id
->
send_buffer
,
length
);
if
(
sbytes
==
RETURNerror
)
{
LOG_TRACE
(
ERROR
,
"USR-API - send() failed, %s"
,
strerror
(
errno
));
...
...
@@ -339,7 +324,7 @@ static int _user_api_send_data(user_api_id_t *user_api_id, int length)
}
else
{
LOG_TRACE
(
INFO
,
"USR-API - %d bytes sent "
"to the user application layer"
,
sbytes
);
LOG_DUMP
(
_user_api_
send_buffer
,
sbytes
);
LOG_DUMP
(
user_api_id
->
send_buffer
,
sbytes
);
}
return
sbytes
;
...
...
@@ -379,7 +364,6 @@ int user_api_send_data(user_api_id_t *user_api_id, int fd, int length)
** Others: None **
** **
** Outputs: Return: None **
** Others: _user_api_id **
** **
***************************************************************************/
void
user_api_close
(
user_api_id_t
*
user_api_id
,
int
fd
)
...
...
@@ -412,11 +396,9 @@ void user_api_close(user_api_id_t *user_api_id, int fd)
** layer when the AT command failed to be decoded. **
** **
** Inputs: length: Number of bytes to decode **
** Others: _user_api_recv_buffer **
** **
** Outputs: Return: The number of AT commands succeessfully **
** decoded **
** Others: _user_api_send_buffer, _user_data **
** **
***************************************************************************/
int
user_api_decode_data
(
user_api_id_t
*
user_api_id
,
user_at_commands_t
*
commands
,
int
length
)
...
...
@@ -424,8 +406,8 @@ int user_api_decode_data(user_api_id_t *user_api_id, user_at_commands_t *command
LOG_FUNC_IN
;
/* Parse the AT command line */
LOG_TRACE
(
INFO
,
"USR-API - Decode user data: %s"
,
_user_api_
recv_buffer
);
commands
->
n_cmd
=
at_command_decode
(
_user_api_
recv_buffer
,
length
,
LOG_TRACE
(
INFO
,
"USR-API - Decode user data: %s"
,
user_api_id
->
recv_buffer
);
commands
->
n_cmd
=
at_command_decode
(
user_api_id
->
recv_buffer
,
length
,
commands
->
cmd
);
if
(
commands
->
n_cmd
>
0
)
{
...
...
@@ -441,10 +423,10 @@ int user_api_decode_data(user_api_id_t *user_api_id, user_at_commands_t *command
/* Failed to decode AT command data received from the user
* application layer; Return syntax error code message */
LOG_TRACE
(
ERROR
,
"USR-API - Syntax error: Failed to decode "
"AT command data %s"
,
_user_api_
recv_buffer
);
"AT command data %s"
,
user_api_id
->
recv_buffer
);
/* Encode the syntax error code message */
bytes
=
at_error_encode
(
_user_api_
send_buffer
,
AT_ERROR_SYNTAX
,
bytes
=
at_error_encode
(
user_api_id
->
send_buffer
,
AT_ERROR_SYNTAX
,
AT_ERROR_OPERATION_NOT_SUPPORTED
);
// FIXME move _user_data call
...
...
@@ -471,10 +453,9 @@ int user_api_decode_data(user_api_id_t *user_api_id, user_at_commands_t *command
** Outputs: Return: The number of characters that have been **
** successfully encoded; **
** RETURNerror otherwise. **
** Others: _user_api_send_buffer **
** **
***************************************************************************/
int
user_api_encode_data
(
const
void
*
data
,
int
success_code
)
int
user_api_encode_data
(
user_api_id_t
*
user_api_id
,
const
void
*
data
,
int
success_code
)
{
LOG_FUNC_IN
;
...
...
@@ -483,16 +464,16 @@ int user_api_encode_data(const void* data, int success_code)
/* Encode AT command error message */
if
(
user_data
->
cause_code
!=
AT_ERROR_SUCCESS
)
{
bytes
=
at_error_encode
(
_user_api_
send_buffer
,
AT_ERROR_CME
,
bytes
=
at_error_encode
(
user_api_id
->
send_buffer
,
AT_ERROR_CME
,
user_data
->
cause_code
);
}
/* Encode AT command response message */
else
{
bytes
=
at_response_encode
(
_user_api_
send_buffer
,
user_data
);
bytes
=
at_response_encode
(
user_api_id
->
send_buffer
,
user_data
);
/* Add success result code */
if
(
(
success_code
)
&&
(
bytes
!=
RETURNerror
)
)
{
bytes
+=
at_error_encode
(
&
_user_api_
send_buffer
[
bytes
],
bytes
+=
at_error_encode
(
&
user_api_id
->
send_buffer
[
bytes
],
AT_ERROR_OK
,
0
);
}
}
...
...
@@ -613,7 +594,6 @@ int user_api_esm_callback(user_api_id_t *user_api_id, int cid, network_pdn_state
** Description: Encodes and sends data to the user application layer **
** **
** Inputs: data: The data to send **
** Others: _user_api_send_buffer, _user_api_id **
** **
** Outputs: Return: The number of bytes sent when success; **
** RETURNerror Otherwise **
...
...
@@ -625,7 +605,7 @@ static int _user_api_send(user_api_id_t *user_api_id, at_response_t* data)
LOG_FUNC_IN
;
/* Encode AT command response message */
int
bytes
=
at_response_encode
(
_user_api_
send_buffer
,
data
);
int
bytes
=
at_response_encode
(
user_api_id
->
send_buffer
,
data
);
/* Send the AT command response message to the user application */
if
(
bytes
!=
RETURNerror
)
{
...
...
openair3/NAS/UE/API/USER/user_api.h
View file @
e6daacf7
...
...
@@ -67,11 +67,11 @@ int user_api_get_fd(user_api_id_t *user_api_id);
const
void
*
user_api_get_data
(
user_at_commands_t
*
commands
,
int
index
);
int
user_api_read_data
(
user_api_id_t
*
user_api_id
,
int
fd
);
int
user_api_set_data
(
char
*
message
);
int
user_api_set_data
(
user_api_id_t
*
user_api_id
,
char
*
message
);
int
user_api_send_data
(
user_api_id_t
*
user_api_id
,
int
fd
,
int
length
);
void
user_api_close
(
user_api_id_t
*
user_api_id
,
int
fd
);
int
user_api_decode_data
(
user_api_id_t
*
user_api_id
,
user_at_commands_t
*
commands
,
int
length
);
int
user_api_encode_data
(
const
void
*
data
,
int
add_success_code
);
int
user_api_encode_data
(
user_api_id_t
*
user_api_id
,
const
void
*
data
,
int
add_success_code
);
#endif
/* __USER_API_H__ */
openair3/NAS/UE/API/USER/user_api_defs.h
View file @
e6daacf7
...
...
@@ -8,12 +8,15 @@
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
#define USER_API_RECV_BUFFER_SIZE 4096
#define USER_API_SEND_BUFFER_SIZE USER_API_RECV_BUFFER_SIZE
#define USER_DATA_MAX 10
/*
* The decoded data received from the user application layer
*/
typedef
struct
{
int
n_cmd
;
/* number of user data to be processed */
#define USER_DATA_MAX 10
at_command_t
cmd
[
USER_DATA_MAX
];
/* user data to be processed */
}
user_at_commands_t
;
...
...
@@ -39,6 +42,8 @@ typedef struct {
ssize_t
(
*
recv
)
(
void
*
,
char
*
,
size_t
);
ssize_t
(
*
send
)
(
const
void
*
,
const
char
*
,
size_t
);
void
(
*
close
)(
void
*
);
char
recv_buffer
[
USER_API_RECV_BUFFER_SIZE
];
char
send_buffer
[
USER_API_SEND_BUFFER_SIZE
];
}
user_api_id_t
;
...
...
openair3/NAS/UE/nas_user.c
View file @
e6daacf7
...
...
@@ -220,7 +220,7 @@ int nas_user_receive_and_process(nas_user_t *user, char *message)
if
(
message
!=
NULL
)
{
/* Set the message in receive buffer (Use to simulate reception of data from UserProcess) */
bytes
=
user_api_set_data
(
message
);
bytes
=
user_api_set_data
(
user_api_id
,
message
);
}
else
{
/* Read the user data message */
bytes
=
user_api_read_data
(
user_api_id
,
user
->
fd
);
...
...
@@ -270,7 +270,7 @@ int nas_user_receive_and_process(nas_user_t *user, char *message)
/* Send response to UserProcess (If not in simulated reception) */
if
(
message
==
NULL
)
{
/* Encode the user data message */
bytes
=
user_api_encode_data
(
nas_user_get_data
(
user
),
i
==
nb_command
-
1
);
bytes
=
user_api_encode_data
(
user
->
user_api_id
,
nas_user_get_data
(
user
),
i
==
nb_command
-
1
);
if
(
bytes
==
RETURNerror
)
{
/* Failed to encode the user data message;
...
...
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