Skip to content

Commit

Permalink
move part of isobusfs code to the libj1939
Browse files Browse the repository at this point in the history
Move part of isobusfs which can be reused by other applications to the
libj1939. By the way, reuse some of new libj1939 code in the j1939cat.

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
  • Loading branch information
olerem committed Jun 6, 2024
1 parent 69c1e82 commit af95ee0
Show file tree
Hide file tree
Showing 11 changed files with 314 additions and 267 deletions.
10 changes: 7 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ if(NOT ANDROID)
libj1939.c
)

target_link_libraries(j1939
PRIVATE can
)

add_library(isobusfs SHARED
isobusfs/isobusfs_cmn.c
isobusfs/isobusfs_cmn_dh.c
Expand Down Expand Up @@ -134,7 +138,7 @@ if(NOT ANDROID)
)

target_link_libraries(isobusfs-cli
PRIVATE isobusfs can
PRIVATE isobusfs can j1939
)

add_executable(isobusfs-srv
Expand All @@ -148,7 +152,7 @@ if(NOT ANDROID)
)

target_link_libraries(isobusfs-srv
PRIVATE isobusfs can
PRIVATE isobusfs can j1939
)

install(TARGETS
Expand All @@ -167,7 +171,7 @@ foreach(name ${PROGRAMS})

if("${name}" IN_LIST PROGRAMS_J1939)
target_link_libraries(${name}
PRIVATE j1939
PRIVATE j1939 can
)
elseif("${name}" IN_LIST PROGRAMS_CANLIB)
target_link_libraries(${name}
Expand Down
42 changes: 21 additions & 21 deletions isobusfs/isobusfs_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ int isobusfs_cli_process_events_and_tasks(struct isobusfs_priv *priv)
if (priv->state == ISOBUSFS_CLI_STATE_SELFTEST)
dont_wait = true;

ret = isobusfs_cmn_prepare_for_events(&priv->cmn, &nfds, dont_wait);
ret = libj1939_prepare_for_events(&priv->cmn, &nfds, dont_wait);
if (ret)
return ret;

Expand All @@ -354,31 +354,31 @@ static int isobusfs_cli_sock_main_prepare(struct isobusfs_priv *priv)
struct sockaddr_can addr = priv->sockname;
int ret;

ret = isobusfs_cmn_open_socket();
ret = libj1939_open_socket();
if (ret < 0)
return ret;

priv->sock_main = ret;

/* TODO: this is TX only socket */
addr.can_addr.j1939.pgn = ISOBUSFS_PGN_FS_TO_CL;
ret = isobusfs_cmn_bind_socket(priv->sock_main, &addr);
ret = libj1939_bind_socket(priv->sock_main, &addr);
if (ret < 0)
return ret;

ret = isobusfs_cmn_set_linger(priv->sock_main);
if (ret < 0)
return ret;

ret = isobusfs_cmn_socket_prio(priv->sock_main, ISOBUSFS_PRIO_DEFAULT);
ret = libj1939_socket_prio(priv->sock_main, ISOBUSFS_PRIO_DEFAULT);
if (ret < 0)
return ret;

ret = isobusfs_cmn_connect_socket(priv->sock_main, &priv->peername);
if (ret < 0)
return ret;

return isobusfs_cmn_add_socket_to_epoll(priv->cmn.epoll_fd,
return libj1939_add_socket_to_epoll(priv->cmn.epoll_fd,
priv->sock_main, EPOLLIN);
}

Expand All @@ -398,7 +398,7 @@ static int isobusfs_cli_sock_int_prepare(struct isobusfs_priv *priv)
if (ret < 0)
return ret;

return isobusfs_cmn_add_socket_to_epoll(priv->cmn.epoll_fd,
return libj1939_add_socket_to_epoll(priv->cmn.epoll_fd,
STDIN_FILENO, EPOLLIN);
}

Expand All @@ -407,7 +407,7 @@ static int isobusfs_cli_sock_ccm_prepare(struct isobusfs_priv *priv)
struct sockaddr_can addr = priv->sockname;
int ret;

ret = isobusfs_cmn_open_socket();
ret = libj1939_open_socket();
if (ret < 0)
return ret;

Expand All @@ -419,15 +419,15 @@ static int isobusfs_cli_sock_ccm_prepare(struct isobusfs_priv *priv)

/* TODO: this is TX only socket */
addr.can_addr.j1939.pgn = J1939_NO_PGN;
ret = isobusfs_cmn_bind_socket(priv->sock_ccm, &addr);
ret = libj1939_bind_socket(priv->sock_ccm, &addr);
if (ret < 0)
return ret;

ret = isobusfs_cmn_set_linger(priv->sock_ccm);
if (ret < 0)
return ret;

ret = isobusfs_cmn_socket_prio(priv->sock_ccm, ISOBUSFS_PRIO_DEFAULT);
ret = libj1939_socket_prio(priv->sock_ccm, ISOBUSFS_PRIO_DEFAULT);
if (ret < 0)
return ret;

Expand All @@ -436,7 +436,7 @@ static int isobusfs_cli_sock_ccm_prepare(struct isobusfs_priv *priv)
return ret;

/* poll for errors to get confirmation if our packets are send */
return isobusfs_cmn_add_socket_to_epoll(priv->cmn.epoll_fd, priv->sock_ccm,
return libj1939_add_socket_to_epoll(priv->cmn.epoll_fd, priv->sock_ccm,
EPOLLERR);
}

Expand All @@ -445,23 +445,23 @@ static int isobusfs_cli_sock_nack_prepare(struct isobusfs_priv *priv)
struct sockaddr_can addr = priv->sockname;
int ret;

ret = isobusfs_cmn_open_socket();
ret = libj1939_open_socket();
if (ret < 0)
return ret;

priv->sock_nack = ret;

addr.can_addr.j1939.pgn = ISOBUS_PGN_ACK;
ret = isobusfs_cmn_bind_socket(priv->sock_nack, &addr);
ret = libj1939_bind_socket(priv->sock_nack, &addr);
if (ret < 0)
return ret;

ret = isobusfs_cmn_socket_prio(priv->sock_nack, ISOBUSFS_PRIO_ACK);
ret = libj1939_socket_prio(priv->sock_nack, ISOBUSFS_PRIO_ACK);
if (ret < 0)
return ret;

/* poll for errors to get confirmation if our packets are send */
return isobusfs_cmn_add_socket_to_epoll(priv->cmn.epoll_fd,
return libj1939_add_socket_to_epoll(priv->cmn.epoll_fd,
priv->sock_nack, EPOLLIN);
}

Expand All @@ -471,7 +471,7 @@ static int isobusfs_cli_sock_bcast_prepare(struct isobusfs_priv *priv)
struct sockaddr_can addr = priv->sockname;
int ret;

ret = isobusfs_cmn_open_socket();
ret = libj1939_open_socket();
if (ret < 0)
return ret;

Expand All @@ -481,27 +481,27 @@ static int isobusfs_cli_sock_bcast_prepare(struct isobusfs_priv *priv)
addr.can_addr.j1939.name = J1939_NO_NAME;
addr.can_addr.j1939.addr = J1939_NO_ADDR;
addr.can_addr.j1939.pgn = ISOBUSFS_PGN_FS_TO_CL;
ret = isobusfs_cmn_bind_socket(priv->sock_bcast_rx, &addr);
ret = libj1939_bind_socket(priv->sock_bcast_rx, &addr);
if (ret < 0)
return ret;

ret = isobusfs_cmn_set_broadcast(priv->sock_bcast_rx);
ret = libj1939_set_broadcast(priv->sock_bcast_rx);
if (ret < 0)
return ret;

ret = isobusfs_cmn_connect_socket(priv->sock_bcast_rx, &priv->peername);
if (ret < 0)
return ret;

return isobusfs_cmn_add_socket_to_epoll(priv->cmn.epoll_fd, priv->sock_bcast_rx,
return libj1939_add_socket_to_epoll(priv->cmn.epoll_fd, priv->sock_bcast_rx,
EPOLLIN);
}

static int isobusfs_cli_sock_prepare(struct isobusfs_priv *priv)
{
int ret;

ret = isobusfs_cmn_create_epoll();
ret = libj1939_create_epoll();
if (ret < 0)
return ret;

Expand Down Expand Up @@ -647,8 +647,8 @@ int main(int argc, char *argv[])

bzero(priv, sizeof(*priv));

isobusfs_init_sockaddr_can(&priv->sockname, J1939_NO_PGN);
isobusfs_init_sockaddr_can(&priv->peername, ISOBUSFS_PGN_CL_TO_FS);
libj1939_init_sockaddr_can(&priv->sockname, J1939_NO_PGN);
libj1939_init_sockaddr_can(&priv->peername, ISOBUSFS_PGN_CL_TO_FS);

ret = isobusfs_cli_parse_args(priv, argc, argv);
if (ret)
Expand Down
2 changes: 1 addition & 1 deletion isobusfs/isobusfs_cli.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ struct isobusfs_priv {
struct isobusfs_buf_log tx_buf_log;
enum isobusfs_cli_state state;

struct isobusfs_cmn cmn;
struct libj1939_cmn cmn;
uint8_t handle;

uint32_t read_offset;
Expand Down
Loading

0 comments on commit af95ee0

Please sign in to comment.