Skip to content

Commit

Permalink
Merge pull request #1480 from dwcaress/trndev
Browse files Browse the repository at this point in the history
Add support for IP port in stream7k, frames7k host option
  • Loading branch information
dwcaress authored Aug 27, 2024
2 parents b69c40f + 71854d2 commit 0dd0e89
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 37 deletions.
17 changes: 13 additions & 4 deletions src/mbtrn/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#. udpc
#. mbtnav_cli
#. stream7k
#. frames7k
#. emu7k
#. r7kr-test
#. trnc
Expand Down Expand Up @@ -109,13 +110,21 @@ target_link_libraries(mbtnav_cli PRIVATE mbtrnframe m pthread)
#------------------------------------------------------------------------------
#
add_executable(stream7k utils/stream7k.c)
target_include_directories(stream7k PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnframe
${CMAKE_SOURCE_DIR}/src/mbtrn/r7kr
${CMAKE_SOURCE_DIR}/src/mbtrnutils)
target_include_directories(stream7k PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnframe
${CMAKE_SOURCE_DIR}/src/mbtrn/r7kr
${CMAKE_SOURCE_DIR}/src/mbtrnutils)
target_link_libraries(stream7k PRIVATE mbtrnframe r7kr)
#
#------------------------------------------------------------------------------
#
add_executable(frames7k utils/frames7k.c)
target_include_directories(frames7k PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnframe
${CMAKE_SOURCE_DIR}/src/mbtrn/r7kr
${CMAKE_SOURCE_DIR}/src/mbtrnutils)
target_link_libraries(frames7k PRIVATE mbtrnframe r7kr)
#
#------------------------------------------------------------------------------
#
add_executable(emu7k utils/emu7k.c)
target_include_directories(emu7k PRIVATE ${CMAKE_SOURCE_DIR}/src/mbtrnframe
${CMAKE_SOURCE_DIR}/src/mbtrn/r7kr
Expand Down Expand Up @@ -195,7 +204,7 @@ target_link_libraries(emserpub PRIVATE TIRPC::TIRPC mbtrnframe m pthread)
#
install(TARGETS r7kr mb1r DESTINATION ${CMAKE_INSTALL_LIBDIR})
#
install(TARGETS udps udpc mbtnav_cli stream7k emu7k r7kr_test trnc tbinx mb1conv mb12csv mb1r_test mb1-cli emallpub emserpub DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS udps udpc mbtnav_cli stream7k frames7k emu7k r7kr_test trnc tbinx mb1conv mb12csv mb1r_test mb1-cli emallpub emserpub DESTINATION ${CMAKE_INSTALL_BINDIR})
#
#------------------------------------------------------------------------------
#
36 changes: 25 additions & 11 deletions src/mbtrn/utils/frames7k.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@ typedef struct app_cfg_s{
/// @var app_cfg_s::host
/// @brief hostname
char *host;
/// @var app_cfg_s::port
/// @brief S7K IP port
int port;
/// @var app_cfg_s::cycles
/// @brief number of cycles (<=0 : unlimited)
int cycles;
Expand Down Expand Up @@ -157,11 +160,14 @@ static void s_show_help()
char help_message[] = "\n Stream reson data frames to console\n";
char usage_message[] = "\n frames7k [options]\n"
" Options :\n"
" --verbose=n : verbose output\n"
" --host : reson host name or IP address\n"
" --cycles : number of cycles (dfl 0 - until CTRL-C)\n"
" --size : reader capacity (bytes)\n"
" --dev=s : device [e.g. T50, 7125_400]\n"
" --verbose=<n> : verbose output\n"
" --host=<s>[:port] : reson host name or IP address and port\n"
" --cycles=<n> : number of cycles (dfl 0 - until CTRL-C)\n"
" --dev=<s> : device [e.g. T50, 7125_400]; options:\n"
" 7125_400 : Reson 7125 400 kHz (default)"
" 7125_200 : Reson 7125 200 kHz"
" T50 : Reson T50"
" --size=<n> : reader capacity (bytes)\n"
"\n";
printf("%s",help_message);
printf("%s",usage_message);
Expand Down Expand Up @@ -213,7 +219,14 @@ void parse_args(int argc, char **argv, app_cfg_t *cfg)

// host
else if (strcmp("host", options[option_index].name) == 0) {
cfg->host=strdup(optarg);
char *ocopy = strdup(optarg);
char *host_tok = strtok(ocopy,":");
char *port_tok = strtok(NULL,":");
if(host_tok != NULL)
cfg->host=strdup(host_tok);
if(port_tok != NULL)
sscanf(port_tok, "%d", &cfg->port);
free(ocopy);
}
// cycles
else if (strcmp("cycles", options[option_index].name) == 0) {
Expand Down Expand Up @@ -375,8 +388,9 @@ static int s_app_main (app_cfg_t *cfg)

// initialize reader
// create and open socket connection
r7kr_reader_t *reader = r7kr_reader_new(cfg->dev, cfg->host,R7K_7KCENTER_PORT,cfg->size, subs, nsubs);

MX_LPRINT(FRAMES7K, 1, "connecting host[%s:%d] dev[%d]\n", cfg->host, cfg->port, cfg->dev);
r7kr_reader_t *reader = r7kr_reader_new(cfg->dev, cfg->host, cfg->port, cfg->size, subs, nsubs);

// show reader config
if (cfg->verbose>1) {
r7kr_reader_show(reader,true, 5);
Expand All @@ -386,8 +400,8 @@ static int s_app_main (app_cfg_t *cfg)
// test r7kr_read_frame
byte frame_buf[MAX_FRAME_BYTES_7K]={0};

MX_LPRINT(FRAMES7K, 2, "reader connected [%s/%d] err(%s)\n", cfg->host,R7K_7KCENTER_PORT, me_strerror(me_errno));
MX_LPRINT(FRAMES7K, 2, "reader connected [%s/%d] err(%s)\n", cfg->host, cfg->port, me_strerror(me_errno));

retval=0;
int read_retries=5;
while ( (forever || (count<cfg->cycles)) && !g_stop_flag) {
Expand Down Expand Up @@ -457,7 +471,7 @@ int main(int argc, char **argv)
saStruct.sa_handler = s_termination_handler;
sigaction(SIGINT, &saStruct, NULL);

app_cfg_t cfg_s = {1,strdup(RESON_HOST_DFL),0,MAX_FRAME_BYTES_7K,R7KC_DEV_7125_400KHZ};
app_cfg_t cfg_s = {1, strdup(RESON_HOST_DFL), R7K_7KCENTER_PORT, 0, MAX_FRAME_BYTES_7K, R7KC_DEV_7125_400KHZ};
app_cfg_t *cfg = &cfg_s;

// parse command line options
Expand Down
29 changes: 21 additions & 8 deletions src/mbtrn/utils/stream7k.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ typedef struct app_cfg_s{
/// @var app_cfg_s::host
/// @brief hostname
char *host;
/// @var app_cfg_s::port
/// @brief S7K IP port
int port;
/// @var app_cfg_s::cycles
/// @brief number of cycles
int cycles;
Expand Down Expand Up @@ -155,10 +158,13 @@ static void s_show_help()
char help_message[] = "\n Stream raw reson bytes to console\n";
char usage_message[] = "\n stream7k [options]\n"
"\n Options:\n"
" --verbose=n : verbose output\n"
" --host : reson host name or IP address\n"
" --cycles : number of cycles (dfl 0 - until CTRL-C)\n"
" --dev=s : device [e.g. T50, 7125_400]\n"
" --verbose=<n> : verbose output\n"
" --host=<s>[:port] : reson host name or IP address and port\n"
" --cycles=<n> : number of cycles (dfl 0 - until CTRL-C)\n"
" --dev=<s> : device [e.g. T50, 7125_400]; options:\n"
" 7125_400 : Reson 7125 400 kHz (default)"
" 7125_200 : Reson 7125 200 kHz"
" T50 : Reson T50"
"\n";
printf("%s",help_message);
printf("%s",usage_message);
Expand Down Expand Up @@ -210,7 +216,14 @@ void parse_args(int argc, char **argv, app_cfg_t *cfg)

// host
else if (strcmp("host", options[option_index].name) == 0) {
cfg->host=strdup(optarg);
char *ocopy = strdup(optarg);
char *host_tok = strtok(ocopy,":");
char *port_tok = strtok(NULL,":");
if(host_tok != NULL)
cfg->host=strdup(host_tok);
if(port_tok != NULL)
sscanf(port_tok, "%d", &cfg->port);
free(ocopy);
}
// cycles
else if (strcmp("cycles", options[option_index].name) == 0) {
Expand Down Expand Up @@ -325,9 +338,9 @@ static int s_app_main (app_cfg_t *cfg)
int cycle_count=0;

while (!g_stop_flag) {
s = msock_socket_new(cfg->host, R7K_7KCENTER_PORT, ST_TCP);
s = msock_socket_new(cfg->host, cfg->port, ST_TCP);
if (NULL != s) {
MX_LPRINT(STREAM7K, 1, "connecting host[%s] dev[%d]\n", cfg->host, cfg->dev);
MX_LPRINT(STREAM7K, 1, "connecting host[%s:%d] dev[%d]\n", cfg->host, cfg->port, cfg->dev);
if (msock_connect(s)==0) {
s->status=SS_CONNECTED;

Expand Down Expand Up @@ -390,7 +403,7 @@ int main(int argc, char **argv)
saStruct.sa_handler = s_termination_handler;
sigaction(SIGINT, &saStruct, NULL);

app_cfg_t cfg_s = {true,strdup(RESON_HOST_DFL),0,R7KC_DEV_7125_400KHZ};
app_cfg_t cfg_s = {true, strdup(RESON_HOST_DFL), R7K_7KCENTER_PORT, 0, R7KC_DEV_7125_400KHZ};
app_cfg_t *cfg = &cfg_s;

// parse command line options
Expand Down
29 changes: 28 additions & 1 deletion src/mbtrnav/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -437,12 +437,39 @@ trnw/mb1rs-app.c

target_link_libraries(mb1rs PRIVATE mbtrnframe m)
target_include_directories(mb1rs PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/mbtrnframe trnw terrain-nav)
#
#------------------------------------------------------------------------------
#
# build mb1log-player

# specify build target
add_executable(mb1log-player
utils/mb1log_player.cpp
utils/TrnClient.cpp
utils/TerrainNavClient.cpp
)

# specify dependency libs
target_link_libraries(mb1log-player PRIVATE trnw trncli netif tnav qnx newmat geolib)

# specify include paths
target_include_directories(mb1log-player PUBLIC
BEFORE
${CMAKE_SOURCE_DIR}/src/mbtrnav/opt/rov
${CMAKE_SOURCE_DIR}/src/mbtrnav/trnw
${CMAKE_SOURCE_DIR}/src/mbtrnav/terrain-nav
${CMAKE_SOURCE_DIR}/src/mbtrnav/newmat
${CMAKE_SOURCE_DIR}/src/mbtrnav/qnx-utils
${NetCDF_INCLUDE_DIRS}
)
target_compile_options(mb1log-player PUBLIC
"-std=c++11"
)
#------------------------------------------------------------------------------
# install it all
#
install(TARGETS geolib newmat tnav qnx trnw netif mb1 trnucli trnwcli DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS trnucli-test trnusvr-test trncli-test mmcpub mmcsub mcpub mcsub trnif-test mb1rs DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS trnucli-test trnusvr-test trncli-test mmcpub mmcsub mcpub mcsub trnif-test mb1rs mb1log-player DESTINATION ${CMAKE_INSTALL_BINDIR})
#
#------------------------------------------------------------------------------

Loading

0 comments on commit 0dd0e89

Please sign in to comment.