diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9e86a4cc1594fc0d44274018e7ba09ac533e093e..9817c0f235ffa25c76bf4d744b4d22511c4f571e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,5 @@ ADD_SUBDIRECTORY(mtn) +ADD_SUBDIRECTORY(bin) # locate the necessary dependencies # add the necessary include directories INCLUDE_DIRECTORIES(. ./mtn) @@ -9,6 +10,6 @@ SET(sources bioloid_motion_pages.cpp) SET(headers bioloid_motion_pages.h) # create the executable file ADD_EXECUTABLE(bioloid_motion_pages ${sources}) -TARGET_LINK_LIBRARIES(bioloid_motion_pages mtn_parser) +TARGET_LINK_LIBRARIES(bioloid_motion_pages mtn_parser bin_parser) # link necessary libraries -ADD_DEPENDENCIES(bioloid_motion_pages mtn_parser) +ADD_DEPENDENCIES(bioloid_motion_pages mtn_parser bin_parser) diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..6cee083dcf84abf6385f5d7b6d45092d842412e7 --- /dev/null +++ b/src/bin/CMakeLists.txt @@ -0,0 +1,7 @@ +SET(bin_SRCS bin_file_parser.cpp ../mtn_file.cpp ../mtn_page.cpp ../mtn_step.cpp) + +include_directories(.) +include_directories(../) + +add_library(bin_parser SHARED ${bin_SRCS}) + diff --git a/src/bin/bin_file_parser.cpp b/src/bin/bin_file_parser.cpp index 015cedb387ea0e36bd88947b8053f7f3f9b84be1..392de6deb4d91ee70de19d11d36c6dc66563baaa 100644 --- a/src/bin/bin_file_parser.cpp +++ b/src/bin/bin_file_parser.cpp @@ -1,6 +1,8 @@ #include "bin_file_parser.h" -#include <cctype> #include <fstream> +#include <string.h> +#include <iostream> +#include <stdlib.h> CBinFileParser::CBinFileParser() { @@ -10,9 +12,10 @@ CBinFileParser::CBinFileParser() void CBinFileParser::parse(const char *filename) { std::vector<unsigned short int> angles; + std::string motion_type="motion",name; + std::vector<unsigned int> compliance; std::ifstream in_file(filename); - std::vector<int> compliance; - int length=0,i=0,j=0; + int length=0,i=0,j=0,k=0; CMtnPage *page; CMtnStep *step; @@ -32,13 +35,14 @@ void CBinFileParser::parse(const char *filename) in_file.read((char *)this->pages,length); in_file.close(); // initialize the CMtnFile class - this->motions.set_type("motion"); + this->motions.set_type(motion_type); this->motions.set_version(1.0); this->motions.set_num_servos(PAGE_MAX_NUM_SERVOS); for(i=0;i<MAX_NUM_PAGES;i++) { page=new CMtnPage(PAGE_MAX_NUM_SERVOS); - page->set_name(this->pages[i].header.name); + name=std::string((char *)this->pages[i].header.name); + page->set_name(name); compliance.resize(PAGE_MAX_NUM_SERVOS); for(j=0;j<PAGE_MAX_NUM_SERVOS;j++) compliance[j]=this->pages[i].header.slope[j]; @@ -48,7 +52,7 @@ void CBinFileParser::parse(const char *filename) page->set_repetitions(this->pages[i].header.repeat); page->set_speed_rate(this->pages[i].header.speed); page->set_inertial(this->pages[i].header.accel); - for(j=0;j<this->pages[i].header.num_steps;j++) + for(j=0;j<this->pages[i].header.stepnum;j++) { step=new CMtnStep(PAGE_MAX_NUM_SERVOS); step->set_pause_time(this->pages[i].steps[j].pause); @@ -59,13 +63,13 @@ void CBinFileParser::parse(const char *filename) step->set_angles(angles); page->add_step(step); } - this->motions->add_page(page); + this->motions.add_page(page); } } CMtnFile *CBinFileParser::get_motions(void) { - return this->motions; + return &(this->motions); } CBinFileParser::~CBinFileParser() diff --git a/src/mtn/CMakeLists.txt b/src/mtn/CMakeLists.txt index 2c36ec55b20bcd0dc9ba1eea2e3c04e3a5758774..c79dab95ea8faa6539b0c29028b1b60e66cd06f1 100644 --- a/src/mtn/CMakeLists.txt +++ b/src/mtn/CMakeLists.txt @@ -25,9 +25,10 @@ IF(FLEX_FOUND) ) ENDIF() -SET(mtn_SRCS mtn_file_parser.cpp mtn_file.cpp mtn_page.cpp mtn_step.cpp) +SET(mtn_SRCS mtn_file_parser.cpp ../mtn_file.cpp ../mtn_page.cpp ../mtn_step.cpp) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(.) +include_directories(..) include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_library(mtn_parser SHARED ${BisonOutput} ${FlexOutput} ${mtn_SRCS}) diff --git a/src/mtn/mtn_file.cpp b/src/mtn_file.cpp similarity index 100% rename from src/mtn/mtn_file.cpp rename to src/mtn_file.cpp diff --git a/src/mtn/mtn_file.h b/src/mtn_file.h similarity index 100% rename from src/mtn/mtn_file.h rename to src/mtn_file.h diff --git a/src/mtn/mtn_page.cpp b/src/mtn_page.cpp similarity index 100% rename from src/mtn/mtn_page.cpp rename to src/mtn_page.cpp diff --git a/src/mtn/mtn_page.h b/src/mtn_page.h similarity index 100% rename from src/mtn/mtn_page.h rename to src/mtn_page.h diff --git a/src/mtn/mtn_step.cpp b/src/mtn_step.cpp similarity index 100% rename from src/mtn/mtn_step.cpp rename to src/mtn_step.cpp diff --git a/src/mtn/mtn_step.h b/src/mtn_step.h similarity index 100% rename from src/mtn/mtn_step.h rename to src/mtn_step.h