Commit 42d0c35b authored by Arnaud Blanchard's avatar Arnaud Blanchard
Browse files

Cleaning

parent cda981fe
blc_array
=========
BLC channel
===========
Define a structure for n-dimentional array.
Depend on libblc_core
Copyright : [ETIS](http://www.etis.ensea.fr/neurocyber) - ENSEA, University of Cergy-Pontoise, CNRS (2011-2016)
Author : [Arnaud Blanchard](http://arnaudblanchard.thoughtsheet.com)
Licence : [CeCILL v2.1](http://www.cecill.info/licences/Licence_CeCILL_V2-en.html)
See [online documentation](https://framagit.org/blaar/blc_channel/wikis/home) or install local documentation: `git submodule update doc`
\ No newline at end of file
PROJECT_NAME = "BLC channelk"
PROJECT_NAME = "BLC channel"
OUTPUT_DIRECTORY = doc/blc_channel
OPTIMIZE_OUTPUT_FOR_C = YES
EXTRACT_LOCAL_CLASSES = NO
......
# Copyright ETIS — ENSEA, Université de Cergy-Pontoise, CNRS (2011 - 2016)
# Author: Arnaud Blanchard
# This software is governed by the CeCILL v2.1 license under French law and abiding by the rules of distribution of free software.
# You can use, modify and/ or redistribute the software under the terms of the CeCILL v2.1 license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".
# As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license,
# users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability.
# In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge.
# Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured  and, more generally, to use and operate it in the same conditions as regards security.
# The fact that you are presently reading this means that you have had knowledge of the CeCILL v2.1 license and that you accept its terms.
cmake_minimum_required(VERSION 2.6)
project(examples)
add_definitions(-Wall -Wno-multichar)
message("${BLAAR_DIR}")
add_subdirectory(${BLAAR_DIR}/blc/blc_channel blc_channel)
include_directories(include ${BLC_CHANNEL_INCLUDE_DIRS})
#Both librairies have the same name only the extension will change depending on the OS
add_executable(channel_reader channel_reader.cpp)
add_executable(channel_writer channel_writer.cpp)
target_link_libraries(channel_reader ${BLC_CHANNEL_LIBRARY})
target_link_libraries(channel_writer ${BLC_CHANNEL_LIBRARY})
#Building examples
#add_executable(blc_demo examples/blc_demo.c)
#target_link_libraries(blc_demo shared_blc)
#Add a target to generate documentation
#find_package(Doxygen)
#if(DOXYGEN_FOUND)
#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxyfile.in doxyfile.doxy) #Replace the CMAKE variables in the Doxyfile
#add_custom_target(doc_${PROJECT_NAME} ALL ${DOXYGEN_EXECUTABLE} doxyfile.doxy COMMENT "Generating API documentation with Doxygen" VERBATIM )
#else(DOXYGEN_FOUND)
#message("You need to install doxygen to generate the doc.")
#endif(DOXYGEN_FOUND)
#include "blc_channel.h"
#include <sys/time.h> //gettimeofday
#define SIZE 1000000
int main(int, char **){
blc_channel channel;
//Personnal structure
struct channel_data{
struct timeval timer;
char string[SIZE];
}*channel_data_pt;
struct timeval local_timer;
fprintf(stderr, "Example of a program reading a channel.%ld\n", sizeof(struct channel_data));
//Create or open a blocking channel "/channel_example" receiving data (uint8/uchar) in format NDEF as iti is a personal struct in one dimension (vector) of size of our struct.
channel.create_or_open("/channel_example", BLC_CHANNEL_READ_BLOCK, 'UIN8', 'NDEF', 1, sizeof(struct channel_data));
//We cast the generic data in the personal struct
channel_data_pt=(struct channel_data*)channel.data;
while(1){
//Block until the data is updated
channel.begin_read();
//Time when the data is ready
gettimeofday(&local_timer, NULL);
//Mesure the time between now and the time the data was written
fprintf(stderr, "Received new text after %ldµs\n", (local_timer.tv_sec-channel_data_pt->timer.tv_sec)*1000000+(local_timer.tv_usec-channel_data_pt->timer.tv_usec));
//Indicate that the has been read
channel.end_read();
}
return EXIT_SUCCESS;
}
\ No newline at end of file
#include "blc_channel.h"
#include "sys/time.h" //gettimeofday
#define SIZE 1000000
int main(int, char **){
blc_channel channel;
//Personnal structure
struct channel_data{
struct timeval timer;
char string[SIZE];
}*channel_data_pt;
int created;
fprintf(stderr, "Example of a program sending any data on a channel.\n");
//Create or reopen a blocking channel "/channel_example" sending data of type uint8/uchar in format NDEF(it is a personal struct) of one dimension (vector) of size of the personal struct.
created=channel.create_or_open("/channel_example", BLC_CHANNEL_WRITE_BLOCK, 'UIN8', 'NDEF', 1, sizeof(struct channel_data));
//We cast the generic data in the personal struct
channel_data_pt=(struct channel_data*)channel.data;
while(1){
//block until the previous data has been read (_WRITE_BLOCK)
channel.begin_write();
fprintf(stderr, "Text to send ?...\n");
fgets(channel_data_pt->string, SIZE, stdin);
//Set the time from where the delay will be mesured
gettimeofday(&channel_data_pt->timer, NULL);
//Indicate that there is new data to be read.
channel.end_write();
}
return EXIT_SUCCESS;
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment