Current section
3 Versions
Jump to
Current section
3 Versions
Compare versions
5
files changed
+201
additions
-132
deletions
| @@ -1,4 +1,4 @@ | |
| 1 | - cmake_minimum_required (VERSION 2.8) |
| 1 | + cmake_minimum_required (VERSION 2.8...3.19) |
| 2 2 | |
| 3 3 | # prevent expansion of quoted things that could be variables in if() |
| 4 4 | if(${CMAKE_VERSION} VERSION_GREATER 3.1) |
| @@ -90,6 +90,10 @@ endif() | |
| 90 90 | |
| 91 91 | set(BASE_CXX_FLAGS "${BASE_FLAGS}") |
| 92 92 | |
| 93 | + # clear incompatible flags |
| 94 | + string(REPLACE "-fPIE" "-fPIC" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") |
| 95 | + string(REPLACE "-fPIE" "-fPIC" BASE_C_FLAGS "${BASE_C_FLAGS}") |
| 96 | + |
| 93 97 | # generate version file from CMake info. |
| 94 98 | CONFIGURE_FILE("${lib_SRC_PATH}/version.c.in" "${lib_SRC_PATH}/version.c" @ONLY) |
| 95 99 | |
| @@ -268,6 +272,7 @@ install(TARGETS plctag_static DESTINATION lib${LIB_SUFFIX}) | |
| 268 272 | install(FILES "${lib_SRC_PATH}/libplctag.h" DESTINATION include) |
| 269 273 | install(FILES "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libplctag.pc" DESTINATION "lib${LIB_SUFFIX}/pkgconfig") |
| 270 274 | |
| 275 | + message(STATUS "Debug CMAKE_C_FLAGS=${CMAKE_C_FLAGS}; BASE_C_FLAGS=${BASE_C_FLAGS}") |
| 271 276 | |
| 272 277 | macro(print_all_variables) |
| 273 278 | message(STATUS "print_all_variables------------------------------------------{") |
| @@ -1,6 +1,62 @@ | |
| 1 | - # Abex |
| 1 | + <div align="center"> |
| 2 | + <img src="https://raw.githubusercontent.com/valiot/abex/master/assets/images/abex-logo.png" alt="abex Logo" width="512" height="151" /> |
| 3 | + </div> |
| 2 4 | |
| 3 | - **TODO: Add description** |
| 5 | + *** |
| 6 | + <br> |
| 7 | + <div align="center"> |
| 8 | + <img src="https://raw.githubusercontent.com/valiot/abex/master/assets/images/valiot-logo-blue.png" alt="Valiot Logo" width="384" height="80" /> |
| 9 | + </div> |
| 10 | + <br> |
| 11 | + |
| 12 | + ## Usage |
| 13 | + |
| 14 | + ABex is a GenServer-based implementation to expose tags and can be summarized by: |
| 15 | + |
| 16 | + 1. Start a Tag process use `start_link/1`. |
| 17 | + |
| 18 | + The following options are available: |
| 19 | + - `ip` - IP PLC address (string). |
| 20 | + - `path` - The path to the device containing the named data (string). |
| 21 | + - `cpu` - AB CPU models (string): plc,plc5,slc,slc500,micrologix,mlgx,compactlogix,clgx,lgx,controllogix,contrologix,flexlogix,flgx. |
| 22 | + |
| 23 | + 1. Send requests `get_all_tags/1`, `read/2`, `write/2`. |
| 24 | + |
| 25 | + ### Get Tags paths. |
| 26 | + |
| 27 | + To get all available tags use `get_all_tags/1`. |
| 28 | + |
| 29 | + ```elixir |
| 30 | + iex> {:ok, tag_pid} = ABex.Tag.start_link(ip: "20.0.0.70", cpu: "lgx", path: "1,0") |
| 31 | + iex> {:ok, tag_list} = ABex.Tag.get_all_tags(tag_pid) |
| 32 | + ``` |
| 33 | + |
| 34 | + ### Read tag data |
| 35 | + |
| 36 | + Use `read/2`. The following options are available: |
| 37 | + - `data_type` - Expected data type (string). |
| 38 | + - `elem_size` - Expected data type size in bytes (integer). |
| 39 | + - `elem_count` - Number of items to request (integer). |
| 40 | + - `name` - Tag's name (string). |
| 41 | + |
| 42 | + ```elixir |
| 43 | + iex> {:ok, tag_pid} = ABex.Tag.start_link(ip: "20.0.0.70", cpu: "lgx", path: "1,0") |
| 44 | + iex> {:ok, values} = ABex.Tag.read(tag_pid, name: "Some_tag", elem_size: 8, elem_count: 1, data_type: "uint8") |
| 45 | + ``` |
| 46 | + |
| 47 | + ### Write a value to a tag |
| 48 | + |
| 49 | + Use `write/2`. The following options are available: |
| 50 | + - `data_type` - Expected data type (string). |
| 51 | + - `elem_size` - Expected data type size in bytes (integer). |
| 52 | + - `elem_count` - Number of items to request (integer). |
| 53 | + - `name` - Tag's name (string). |
| 54 | + - `value` - Value to be written on the tag. |
| 55 | + |
| 56 | + ```elixir |
| 57 | + iex> {:ok, tag_pid} = ABex.Tag.start_link(ip: "20.0.0.70", cpu: "lgx", path: "1,0") |
| 58 | + iex> :ok = ABex.Tag.read(tag_pid, name: "Some_tag", elem_size: 8, elem_count: 1, data_type: "uint8", value: 103) |
| 59 | + ``` |
| 4 60 | |
| 5 61 | ## Installation |
| @@ -4,135 +4,135 @@ | |
| 4 4 | <<"Elixir wrapper for Libplctag, for communication with Allen-Bradley PLC's.">>}. |
| 5 5 | {<<"elixir">>,<<"~> 1.9">>}. |
| 6 6 | {<<"files">>, |
| 7 | - [<<"lib">>,<<"lib/api.ex">>,<<"lib/tag.ex">>,<<"src/rw_tag.c">>, |
| 7 | + [<<"lib">>,<<"lib/tag.ex">>,<<"lib/api.ex">>,<<"src/rw_tag.c">>, |
| 8 8 | <<"src/tag_list.c">>,<<"src/libplctag/libplctag.pc.in">>, |
| 9 | - <<"src/libplctag/src">>,<<"src/libplctag/src/examples">>, |
| 10 | - <<"src/libplctag/src/examples/multithread_cached_read.c">>, |
| 11 | - <<"src/libplctag/src/examples/utils_posix.c">>, |
| 12 | - <<"src/libplctag/src/examples/stress_test.c">>, |
| 13 | - <<"src/libplctag/src/examples/toggle_bool.c">>, |
| 14 | - <<"src/libplctag/src/examples/slc500.c">>, |
| 15 | - <<"src/libplctag/src/examples/simple.c">>, |
| 16 | - <<"src/libplctag/src/examples/stress_api_lock.c">>, |
| 17 | - <<"src/libplctag/src/examples/write_string.c">>, |
| 18 | - <<"src/libplctag/src/examples/multithread_plc5_dhp.c">>, |
| 19 | - <<"src/libplctag/src/examples/simple_dual.c">>, |
| 20 | - <<"src/libplctag/src/examples/README.txt">>, |
| 21 | - <<"src/libplctag/src/examples/async.c">>, |
| 22 | - <<"src/libplctag/src/examples/plc5.c">>, |
| 23 | - <<"src/libplctag/src/examples/string.c">>, |
| 24 | - <<"src/libplctag/src/examples/multithread.c">>, |
| 25 | - <<"src/libplctag/src/examples/data_dumper.conf">>, |
| 26 | - <<"src/libplctag/src/examples/tag_rw.c">>, |
| 27 | - <<"src/libplctag/src/examples/utils.h">>, |
| 28 | - <<"src/libplctag/src/examples/simple_cpp.cpp">>, |
| 29 | - <<"src/libplctag/src/examples/data_dumper.c">>, |
| 30 | - <<"src/libplctag/src/examples/test_reconnect.c">>, |
| 31 | - <<"src/libplctag/src/examples/multithread_plc5.c">>, |
| 32 | - <<"src/libplctag/src/examples/test_special.c">>, |
| 33 | - <<"src/libplctag/src/examples/list_tags.c">>, |
| 34 | - <<"src/libplctag/src/examples/utils_windows.c">>, |
| 35 | - <<"src/libplctag/src/scripts">>,<<"src/libplctag/src/scripts/match_alloc">>, |
| 36 | - <<"src/libplctag/src/scripts/error_translate.pl">>, |
| 37 | - <<"src/libplctag/src/tests">>,<<"src/libplctag/src/tests/hashtable">>, |
| 38 | - <<"src/libplctag/src/tests/hashtable/test_hashtable.c">>, |
| 39 | - <<"src/libplctag/src/tests/lgx_sim">>, |
| 40 | - <<"src/libplctag/src/tests/lgx_sim/tags.h">>, |
| 41 | - <<"src/libplctag/src/tests/lgx_sim/session.c">>, |
| 42 | - <<"src/libplctag/src/tests/lgx_sim/log.h">>, |
| 43 | - <<"src/libplctag/src/tests/lgx_sim/packet.h">>, |
| 44 | - <<"src/libplctag/src/tests/lgx_sim/tags.c">>, |
| 45 | - <<"src/libplctag/src/tests/lgx_sim/session.h">>, |
| 46 | - <<"src/libplctag/src/tests/lgx_sim/main.c">>, |
| 47 | - <<"src/libplctag/src/protocols">>,<<"src/libplctag/src/protocols/ab">>, |
| 48 | - <<"src/libplctag/src/protocols/ab/eip_slc_pccc.c">>, |
| 49 | - <<"src/libplctag/src/protocols/ab/cip.c">>, |
| 50 | - <<"src/libplctag/src/protocols/ab/session.c">>, |
| 51 | - <<"src/libplctag/src/protocols/ab/eip_lgx_pccc.h">>, |
| 52 | - <<"src/libplctag/src/protocols/ab/error_codes.c">>, |
| 53 | - <<"src/libplctag/src/protocols/ab/pccc.h">>, |
| 54 | - <<"src/libplctag/src/protocols/ab/tag.h">>, |
| 55 | - <<"src/libplctag/src/protocols/ab/eip_dhp_pccc.h">>, |
| 56 | - <<"src/libplctag/src/protocols/ab/ab_common.h">>, |
| 57 | - <<"src/libplctag/src/protocols/ab/eip_cip.c">>, |
| 58 | - <<"src/libplctag/src/protocols/ab/error_codes.h">>, |
| 59 | - <<"src/libplctag/src/protocols/ab/ab_common.c">>, |
| 60 | - <<"src/libplctag/src/protocols/ab/cip.h">>, |
| 61 | - <<"src/libplctag/src/protocols/ab/eip_dhp_pccc.c">>, |
| 62 | - <<"src/libplctag/src/protocols/ab/session.h">>, |
| 63 | - <<"src/libplctag/src/protocols/ab/pccc.c">>, |
| 64 | - <<"src/libplctag/src/protocols/ab/ab.h">>, |
| 65 | - <<"src/libplctag/src/protocols/ab/eip_lgx_pccc.c">>, |
| 66 | - <<"src/libplctag/src/protocols/ab/eip_plc5_pccc.c">>, |
| 67 | - <<"src/libplctag/src/protocols/ab/eip_cip.h">>, |
| 68 | - <<"src/libplctag/src/protocols/ab/eip_slc_pccc.h">>, |
| 69 | - <<"src/libplctag/src/protocols/ab/defs.h">>, |
| 70 | - <<"src/libplctag/src/protocols/ab/eip_plc5_pccc.h">>, |
| 71 | - <<"src/libplctag/src/protocols/system">>, |
| 72 | - <<"src/libplctag/src/protocols/system/tag.h">>, |
| 73 | - <<"src/libplctag/src/protocols/system/system.c">>, |
| 74 | - <<"src/libplctag/src/protocols/system/system.h">>, |
| 75 | - <<"src/libplctag/src/platform">>,<<"src/libplctag/src/platform/linux">>, |
| 76 | - <<"src/libplctag/src/platform/linux/platform.h">>, |
| 77 | - <<"src/libplctag/src/platform/linux/platform.c">>, |
| 78 | - <<"src/libplctag/src/platform/windows">>, |
| 79 | - <<"src/libplctag/src/platform/windows/platform.h">>, |
| 80 | - <<"src/libplctag/src/platform/windows/platform.c">>, |
| 81 | - <<"src/libplctag/src/lib">>,<<"src/libplctag/src/lib/lib.c">>, |
| 82 | - <<"src/libplctag/src/lib/version.c">>,<<"src/libplctag/src/lib/version.h">>, |
| 83 | - <<"src/libplctag/src/lib/tag.h">>,<<"src/libplctag/src/lib/init.c">>, |
| 84 | - <<"src/libplctag/src/lib/version.c.in">>,<<"src/libplctag/src/lib/init.h">>, |
| 85 | - <<"src/libplctag/src/lib/libplctag.h">>,<<"src/libplctag/src/unported">>, |
| 9 | + <<"src/libplctag/src">>,<<"src/libplctag/src/unported">>, |
| 86 10 | <<"src/libplctag/src/unported/README">>, |
| 87 11 | <<"src/libplctag/src/unported/contrib">>, |
| 88 12 | <<"src/libplctag/src/unported/contrib/cpp">>, |
| 89 13 | <<"src/libplctag/src/unported/contrib/cpp/valdes">>, |
| 14 | + <<"src/libplctag/src/unported/contrib/cpp/valdes/cip.cpp">>, |
| 90 15 | <<"src/libplctag/src/unported/contrib/cpp/valdes/README">>, |
| 91 16 | <<"src/libplctag/src/unported/contrib/cpp/valdes/cip_main.cpp">>, |
| 92 17 | <<"src/libplctag/src/unported/contrib/cpp/valdes/cip.h">>, |
| 93 | - <<"src/libplctag/src/unported/contrib/cpp/valdes/cip.cpp">>, |
| 94 | - <<"src/libplctag/src/wrappers">>,<<"src/libplctag/src/wrappers/go">>, |
| 18 | + <<"src/libplctag/src/util">>,<<"src/libplctag/src/util/hash.c">>, |
| 19 | + <<"src/libplctag/src/util/attr.c">>,<<"src/libplctag/src/util/vector.h">>, |
| 20 | + <<"src/libplctag/src/util/hashtable.c">>, |
| 21 | + <<"src/libplctag/src/util/atomic_int.c">>, |
| 22 | + <<"src/libplctag/src/util/debug.c">>,<<"src/libplctag/src/util/vector.c">>, |
| 23 | + <<"src/libplctag/src/util/byteorder.h">>,<<"src/libplctag/src/util/rc.h">>, |
| 24 | + <<"src/libplctag/src/util/rc.c">>,<<"src/libplctag/src/util/hashtable.h">>, |
| 25 | + <<"src/libplctag/src/util/hash.h">>,<<"src/libplctag/src/util/attr.h">>, |
| 26 | + <<"src/libplctag/src/util/macros.h">>, |
| 27 | + <<"src/libplctag/src/util/atomic_int.h">>, |
| 28 | + <<"src/libplctag/src/util/debug.h">>,<<"src/libplctag/src/examples">>, |
| 29 | + <<"src/libplctag/src/examples/utils_posix.c">>, |
| 30 | + <<"src/libplctag/src/examples/stress_test.c">>, |
| 31 | + <<"src/libplctag/src/examples/list_tags.c">>, |
| 32 | + <<"src/libplctag/src/examples/utils_windows.c">>, |
| 33 | + <<"src/libplctag/src/examples/tag_rw.c">>, |
| 34 | + <<"src/libplctag/src/examples/README.txt">>, |
| 35 | + <<"src/libplctag/src/examples/multithread.c">>, |
| 36 | + <<"src/libplctag/src/examples/data_dumper.c">>, |
| 37 | + <<"src/libplctag/src/examples/simple.c">>, |
| 38 | + <<"src/libplctag/src/examples/test_special.c">>, |
| 39 | + <<"src/libplctag/src/examples/multithread_plc5.c">>, |
| 40 | + <<"src/libplctag/src/examples/stress_api_lock.c">>, |
| 41 | + <<"src/libplctag/src/examples/utils.h">>, |
| 42 | + <<"src/libplctag/src/examples/simple_cpp.cpp">>, |
| 43 | + <<"src/libplctag/src/examples/multithread_plc5_dhp.c">>, |
| 44 | + <<"src/libplctag/src/examples/simple_dual.c">>, |
| 45 | + <<"src/libplctag/src/examples/toggle_bool.c">>, |
| 46 | + <<"src/libplctag/src/examples/multithread_cached_read.c">>, |
| 47 | + <<"src/libplctag/src/examples/plc5.c">>, |
| 48 | + <<"src/libplctag/src/examples/async.c">>, |
| 49 | + <<"src/libplctag/src/examples/data_dumper.conf">>, |
| 50 | + <<"src/libplctag/src/examples/test_reconnect.c">>, |
| 51 | + <<"src/libplctag/src/examples/write_string.c">>, |
| 52 | + <<"src/libplctag/src/examples/slc500.c">>, |
| 53 | + <<"src/libplctag/src/examples/string.c">>,<<"src/libplctag/src/protocols">>, |
| 54 | + <<"src/libplctag/src/protocols/system">>, |
| 55 | + <<"src/libplctag/src/protocols/system/system.h">>, |
| 56 | + <<"src/libplctag/src/protocols/system/system.c">>, |
| 57 | + <<"src/libplctag/src/protocols/system/tag.h">>, |
| 58 | + <<"src/libplctag/src/protocols/ab">>, |
| 59 | + <<"src/libplctag/src/protocols/ab/error_codes.c">>, |
| 60 | + <<"src/libplctag/src/protocols/ab/ab_common.h">>, |
| 61 | + <<"src/libplctag/src/protocols/ab/pccc.c">>, |
| 62 | + <<"src/libplctag/src/protocols/ab/pccc.h">>, |
| 63 | + <<"src/libplctag/src/protocols/ab/eip_dhp_pccc.c">>, |
| 64 | + <<"src/libplctag/src/protocols/ab/eip_slc_pccc.c">>, |
| 65 | + <<"src/libplctag/src/protocols/ab/session.c">>, |
| 66 | + <<"src/libplctag/src/protocols/ab/ab_common.c">>, |
| 67 | + <<"src/libplctag/src/protocols/ab/eip_plc5_pccc.h">>, |
| 68 | + <<"src/libplctag/src/protocols/ab/eip_dhp_pccc.h">>, |
| 69 | + <<"src/libplctag/src/protocols/ab/error_codes.h">>, |
| 70 | + <<"src/libplctag/src/protocols/ab/eip_plc5_pccc.c">>, |
| 71 | + <<"src/libplctag/src/protocols/ab/cip.c">>, |
| 72 | + <<"src/libplctag/src/protocols/ab/tag.h">>, |
| 73 | + <<"src/libplctag/src/protocols/ab/defs.h">>, |
| 74 | + <<"src/libplctag/src/protocols/ab/eip_slc_pccc.h">>, |
| 75 | + <<"src/libplctag/src/protocols/ab/eip_lgx_pccc.h">>, |
| 76 | + <<"src/libplctag/src/protocols/ab/session.h">>, |
| 77 | + <<"src/libplctag/src/protocols/ab/eip_cip.c">>, |
| 78 | + <<"src/libplctag/src/protocols/ab/eip_cip.h">>, |
| 79 | + <<"src/libplctag/src/protocols/ab/ab.h">>, |
| 80 | + <<"src/libplctag/src/protocols/ab/eip_lgx_pccc.c">>, |
| 81 | + <<"src/libplctag/src/protocols/ab/cip.h">>,<<"src/libplctag/src/scripts">>, |
| 82 | + <<"src/libplctag/src/scripts/match_alloc">>, |
| 83 | + <<"src/libplctag/src/scripts/error_translate.pl">>, |
| 84 | + <<"src/libplctag/src/platform">>,<<"src/libplctag/src/platform/windows">>, |
| 85 | + <<"src/libplctag/src/platform/windows/platform.c">>, |
| 86 | + <<"src/libplctag/src/platform/windows/platform.h">>, |
| 87 | + <<"src/libplctag/src/platform/linux">>, |
| 88 | + <<"src/libplctag/src/platform/linux/platform.c">>, |
| 89 | + <<"src/libplctag/src/platform/linux/platform.h">>, |
| 90 | + <<"src/libplctag/src/tests">>,<<"src/libplctag/src/tests/hashtable">>, |
| 91 | + <<"src/libplctag/src/tests/hashtable/test_hashtable.c">>, |
| 92 | + <<"src/libplctag/src/tests/lgx_sim">>, |
| 93 | + <<"src/libplctag/src/tests/lgx_sim/tags.c">>, |
| 94 | + <<"src/libplctag/src/tests/lgx_sim/tags.h">>, |
| 95 | + <<"src/libplctag/src/tests/lgx_sim/session.c">>, |
| 96 | + <<"src/libplctag/src/tests/lgx_sim/main.c">>, |
| 97 | + <<"src/libplctag/src/tests/lgx_sim/log.h">>, |
| 98 | + <<"src/libplctag/src/tests/lgx_sim/session.h">>, |
| 99 | + <<"src/libplctag/src/tests/lgx_sim/packet.h">>, |
| 100 | + <<"src/libplctag/src/wrappers">>,<<"src/libplctag/src/wrappers/pascal">>, |
| 101 | + <<"src/libplctag/src/wrappers/pascal/libplctagv2.pas">>, |
| 102 | + <<"src/libplctag/src/wrappers/python">>, |
| 103 | + <<"src/libplctag/src/wrappers/python/plctag">>, |
| 104 | + <<"src/libplctag/src/wrappers/python/plctag/__init__.py">>, |
| 105 | + <<"src/libplctag/src/wrappers/python/plctag/libplctag.py">>, |
| 106 | + <<"src/libplctag/src/wrappers/python/README">>, |
| 107 | + <<"src/libplctag/src/wrappers/python/tag_rw.py">>, |
| 108 | + <<"src/libplctag/src/wrappers/python/run.sh">>, |
| 109 | + <<"src/libplctag/src/wrappers/go">>, |
| 110 | + <<"src/libplctag/src/wrappers/go/README">>, |
| 95 111 | <<"src/libplctag/src/wrappers/go/examples">>, |
| 96 112 | <<"src/libplctag/src/wrappers/go/examples/toogle_bool.go">>, |
| 97 | - <<"src/libplctag/src/wrappers/go/README">>, |
| 98 113 | <<"src/libplctag/src/wrappers/go/src">>, |
| 99 114 | <<"src/libplctag/src/wrappers/go/src/plctag">>, |
| 100 115 | <<"src/libplctag/src/wrappers/go/src/plctag/plctag.go">>, |
| 101 116 | <<"src/libplctag/src/wrappers/java">>, |
| 102 | - <<"src/libplctag/src/wrappers/java/TagRW.java">>, |
| 103 117 | <<"src/libplctag/src/wrappers/java/libplctag">>, |
| 104 118 | <<"src/libplctag/src/wrappers/java/libplctag/Tag.java">>, |
| 119 | + <<"src/libplctag/src/wrappers/java/TagRW.java">>, |
| 105 120 | <<"src/libplctag/src/wrappers/cpp">>, |
| 106 | - <<"src/libplctag/src/wrappers/cpp/include">>, |
| 107 | - <<"src/libplctag/src/wrappers/cpp/include/plctag.hpp">>, |
| 108 | - <<"src/libplctag/src/wrappers/cpp/include/logging.hpp">>, |
| 109 | - <<"src/libplctag/src/wrappers/cpp/include/ping.hpp">>, |
| 110 121 | <<"src/libplctag/src/wrappers/cpp/Makefile">>, |
| 111 122 | <<"src/libplctag/src/wrappers/cpp/src">>, |
| 112 123 | <<"src/libplctag/src/wrappers/cpp/src/main.cpp">>, |
| 113 | - <<"src/libplctag/src/wrappers/cpp/src/logging.cpp">>, |
| 114 124 | <<"src/libplctag/src/wrappers/cpp/src/ping.cpp">>, |
| 125 | + <<"src/libplctag/src/wrappers/cpp/src/logging.cpp">>, |
| 115 126 | <<"src/libplctag/src/wrappers/cpp/src/plctag.cpp">>, |
| 116 | - <<"src/libplctag/src/wrappers/python">>, |
| 117 | - <<"src/libplctag/src/wrappers/python/README">>, |
| 118 | - <<"src/libplctag/src/wrappers/python/run.sh">>, |
| 119 | - <<"src/libplctag/src/wrappers/python/tag_rw.py">>, |
| 120 | - <<"src/libplctag/src/wrappers/python/plctag">>, |
| 121 | - <<"src/libplctag/src/wrappers/python/plctag/libplctag.py">>, |
| 122 | - <<"src/libplctag/src/wrappers/python/plctag/__init__.py">>, |
| 123 | - <<"src/libplctag/src/wrappers/pascal">>, |
| 124 | - <<"src/libplctag/src/wrappers/pascal/libplctagv2.pas">>, |
| 125 | - <<"src/libplctag/src/util">>,<<"src/libplctag/src/util/debug.c">>, |
| 126 | - <<"src/libplctag/src/util/debug.h">>,<<"src/libplctag/src/util/hash.h">>, |
| 127 | - <<"src/libplctag/src/util/hash.c">>,<<"src/libplctag/src/util/vector.c">>, |
| 128 | - <<"src/libplctag/src/util/atomic_int.h">>, |
| 129 | - <<"src/libplctag/src/util/macros.h">>,<<"src/libplctag/src/util/vector.h">>, |
| 130 | - <<"src/libplctag/src/util/attr.c">>, |
| 131 | - <<"src/libplctag/src/util/hashtable.h">>, |
| 132 | - <<"src/libplctag/src/util/atomic_int.c">>,<<"src/libplctag/src/util/rc.h">>, |
| 133 | - <<"src/libplctag/src/util/attr.h">>, |
| 134 | - <<"src/libplctag/src/util/byteorder.h">>,<<"src/libplctag/src/util/rc.c">>, |
| 135 | - <<"src/libplctag/src/util/hashtable.c">>,<<"CMakeLists.txt">>,<<"test">>, |
| 127 | + <<"src/libplctag/src/wrappers/cpp/include">>, |
| 128 | + <<"src/libplctag/src/wrappers/cpp/include/ping.hpp">>, |
| 129 | + <<"src/libplctag/src/wrappers/cpp/include/plctag.hpp">>, |
| 130 | + <<"src/libplctag/src/wrappers/cpp/include/logging.hpp">>, |
| 131 | + <<"src/libplctag/src/lib">>,<<"src/libplctag/src/lib/version.c">>, |
| 132 | + <<"src/libplctag/src/lib/init.h">>,<<"src/libplctag/src/lib/version.h">>, |
| 133 | + <<"src/libplctag/src/lib/lib.c">>,<<"src/libplctag/src/lib/tag.h">>, |
| 134 | + <<"src/libplctag/src/lib/version.c.in">>,<<"src/libplctag/src/lib/init.c">>, |
| 135 | + <<"src/libplctag/src/lib/libplctag.h">>,<<"CMakeLists.txt">>,<<"test">>, |
| 136 136 | <<"test/abex_test.exs">>,<<"test/test_helper.exs">>,<<"mix.exs">>, |
| 137 137 | <<"README.md">>,<<"LICENSE">>]}. |
| 138 138 | {<<"licenses">>,[<<"MIT">>]}. |
| @@ -143,10 +143,10 @@ | |
| 143 143 | {<<"name">>,<<"elixir_cmake">>}, |
| 144 144 | {<<"optional">>,false}, |
| 145 145 | {<<"repository">>,<<"hexpm">>}, |
| 146 | - {<<"requirement">>,<<"~> 0.1.0">>}], |
| 146 | + {<<"requirement">>,<<"~> 0.8">>}], |
| 147 147 | [{<<"app">>,<<"muontrap">>}, |
| 148 148 | {<<"name">>,<<"muontrap">>}, |
| 149 149 | {<<"optional">>,false}, |
| 150 150 | {<<"repository">>,<<"hexpm">>}, |
| 151 | - {<<"requirement">>,<<"~> 0.5.0">>}]]}. |
| 152 | - {<<"version">>,<<"0.1.1">>}. |
| 151 | + {<<"requirement">>,<<"~> 1.2">>}]]}. |
| 152 | + {<<"version">>,<<"0.1.2">>}. |
| @@ -1,6 +1,6 @@ | |
| 1 1 | defmodule Abex.Tag do |
| 2 2 | @moduledoc """ |
| 3 | - Handles gathering the . |
| 3 | + Handles Tag interactions with an Allen-Bradley PLC. |
| 4 4 | """ |
| 5 5 | use GenServer |
| 6 6 | require Logger |
| @@ -14,13 +14,11 @@ defmodule Abex.Tag do | |
| 14 14 | end |
| 15 15 | |
| 16 16 | def init(args) do |
| 17 | - ld_dirs = |
| 18 | - System.get_env("LD_LIBRARY_PATH") |
| 19 | - |> assemble_current_ld_dir() |
| 20 | - |> Path.join(":") |
| 21 | - |> Path.join(:code.priv_dir(:abex) |> to_string()) |
| 22 | - |
| 23 | - System.put_env("LD_LIBRARY_PATH", ld_dirs) |
| 17 | + _lib_dir = |
| 18 | + :abex |
| 19 | + |> :code.priv_dir() |
| 20 | + |> to_string() |
| 21 | + |> set_ld_library_path() |
| 24 22 | |
| 25 23 | state = %__MODULE__{ |
| 26 24 | ip: Keyword.fetch!(args, :ip), |
| @@ -89,9 +87,6 @@ defmodule Abex.Tag do | |
| 89 87 | {:reply, response, state} |
| 90 88 | end |
| 91 89 | |
| 92 | - defp assemble_current_ld_dir(nil), do: "" |
| 93 | - defp assemble_current_ld_dir(current_dir), do: current_dir |
| 94 | - |
| 95 90 | defp assemble_response({reason, 1}, _task), do: {:error, reason} |
| 96 91 | defp assemble_response({_data, 0}, :write), do: :ok |
| 97 92 | defp assemble_response({data, 0}, :read) do |
| @@ -155,8 +150,24 @@ defmodule Abex.Tag do | |
| 155 150 | defp encapsulate_response(response) when is_tuple(response), do: response |
| 156 151 | defp encapsulate_response(response), do: {:ok, response} |
| 157 152 | |
| 158 | - |
| 159 153 | defp data_type_parser(raw_data, _any_data_type) when is_tuple(raw_data), do: raw_data |
| 160 154 | defp data_type_parser(raw_data, "real32"), do: Enum.map(raw_data, fn(x) -> String.to_float(x) end) |
| 161 155 | defp data_type_parser(raw_data, _any_data_type), do: Enum.map(raw_data, fn(x) -> String.to_integer(x) end) |
| 156 | + |
| 157 | + defp set_ld_library_path(priv_dir) do |
| 158 | + System.get_env("LD_LIBRARY_PATH", "") |
| 159 | + |> String.contains?(priv_dir) |
| 160 | + |> write_ld_library_path(priv_dir) |
| 161 | + end |
| 162 | + |
| 163 | + defp write_ld_library_path(false, priv_dir) do |
| 164 | + ld_dirs = |
| 165 | + System.get_env("LD_LIBRARY_PATH", "") |
| 166 | + |> Path.join(":") |
| 167 | + |> Path.join(priv_dir) |
| 168 | + System.put_env("LD_LIBRARY_PATH", ld_dirs) |
| 169 | + priv_dir |
| 170 | + end |
| 171 | + |
| 172 | + defp write_ld_library_path(true, priv_dir), do: priv_dir |
| 162 173 | end |
| @@ -4,7 +4,7 @@ defmodule Abex.MixProject do | |
| 4 4 | def project do |
| 5 5 | [ |
| 6 6 | app: :abex, |
| 7 | - version: "0.1.1", |
| 7 | + version: "0.1.2", |
| 8 8 | elixir: "~> 1.9", |
| 9 9 | name: "ABex", |
| 10 10 | description: description(), |
| @@ -52,12 +52,9 @@ defmodule Abex.MixProject do | |
| 52 52 | defp deps do |
| 53 53 | [ |
| 54 54 | # it requires an update to elixir_cmake hex dependency |
| 55 | - #{:elixir_cmake, github: "valiot/elixir-cmake"}, |
| 56 | - {:elixir_cmake, "~> 0.1.0"}, |
| 57 | - {:ex_doc, "~> 0.19", only: :dev}, |
| 58 | - {:muontrap, "~> 0.5.0"} |
| 59 | - # {:dep_from_hexpm, "~> 0.3.0"}, |
| 60 | - # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} |
| 55 | + {:elixir_cmake, "~> 0.8"}, |
| 56 | + {:ex_doc, "~> 0.28", only: :dev}, |
| 57 | + {:muontrap, "~> 1.2"}, |
| 61 58 | ] |
| 62 59 | end |
| 63 60 | end |