From bdaf894aeaeb9f755ad5b979da9e11f834bcfc35 Mon Sep 17 00:00:00 2001 From: fanasina Date: Tue, 24 Dec 2024 23:15:44 +0100 Subject: [PATCH] add sockets --- .../src/deepQlearning/learn_to_drive.c | 4 +- deepQlearn_0/src/deepQlearning/vehicle.c | 2 +- deepQlearn_0/test/is_good.c | 8 +- tensor_t/src/tensor_t/tensor_t.c | 5 ++ y_socket/Makefile | 76 +++++++++++++++++++ y_socket/include/y_socket/y_client.h | 24 ++++++ y_socket/include/y_socket/y_queue.h | 8 ++ y_socket/include/y_socket/y_server.h | 29 +++++++ y_socket/include/y_socket/y_socket.h | 42 ++++++++++ y_socket/include/y_socket/y_threads.h | 18 +++++ y_socket/src/y_socket/y_client.c | 1 + y_socket/src/y_socket/y_queue.c | 1 + y_socket/src/y_socket/y_server.c | 2 + y_socket/src/y_socket/y_socket.c | 34 +++++++++ y_socket/src/y_socket/y_threads.c | 3 + y_socket/test/Makefile | 69 +++++++++++++++++ y_socket/test/is_good.c | 35 +++++++++ 17 files changed, 354 insertions(+), 7 deletions(-) create mode 100644 y_socket/Makefile create mode 100644 y_socket/include/y_socket/y_client.h create mode 100644 y_socket/include/y_socket/y_queue.h create mode 100644 y_socket/include/y_socket/y_server.h create mode 100644 y_socket/include/y_socket/y_socket.h create mode 100644 y_socket/include/y_socket/y_threads.h create mode 100644 y_socket/src/y_socket/y_client.c create mode 100644 y_socket/src/y_socket/y_queue.c create mode 100644 y_socket/src/y_socket/y_server.c create mode 100644 y_socket/src/y_socket/y_socket.c create mode 100644 y_socket/src/y_socket/y_threads.c create mode 100644 y_socket/test/Makefile create mode 100644 y_socket/test/is_good.c diff --git a/deepQlearn_0/src/deepQlearning/learn_to_drive.c b/deepQlearn_0/src/deepQlearning/learn_to_drive.c index 1f31311..9741279 100644 --- a/deepQlearn_0/src/deepQlearning/learn_to_drive.c +++ b/deepQlearn_0/src/deepQlearning/learn_to_drive.c @@ -3,13 +3,13 @@ char *action_name[8] = {"LEFT", "CENTER", "RIGHT"}; float reLU(float x){ - if(x>10) return 10; +// if(x>10) return 10; if(x>0) return x; return 0; } float d_reLU(float x){ - if (x>10) return 0; +// if (x>10) return 0; if (x>0) return 1; return 0; } diff --git a/deepQlearn_0/src/deepQlearning/vehicle.c b/deepQlearn_0/src/deepQlearning/vehicle.c index bace2fc..44b60cd 100644 --- a/deepQlearn_0/src/deepQlearning/vehicle.c +++ b/deepQlearn_0/src/deepQlearning/vehicle.c @@ -418,7 +418,7 @@ float distance2_coordinate(coordinate *c0, coordinate *c1){ diStep_sensor->x[0] += step_sensor * cos(direction_radian);\ diStep_sensor->x[1] -= step_sensor * sin(direction_radian);\ }\ - dist = (distance2_coordinate(diStep_sensor, v->coord)/5);\ + dist = (distance2_coordinate(diStep_sensor, v->coord)/10/*5*/);\ /*printf("| dist :%f | ",dist);*/\ v->sensor->x[position] = (float)(MIN((SUBDIVISION-1),dist))/SUBDIVISION ;\ diff --git a/deepQlearn_0/test/is_good.c b/deepQlearn_0/test/is_good.c index 5e0584e..045a09c 100644 --- a/deepQlearn_0/test/is_good.c +++ b/deepQlearn_0/test/is_good.c @@ -457,7 +457,7 @@ TEST(first_learn_vehicle_rev50_8){ int randomRange = 500; size_t nb_prod_thread = 2; size_t nb_calc_thread = 4; - float learning_rate =0.00001 /*0.001*/; + float learning_rate = 0.001; // 0.00001 /*0.001*/; struct networks_qlearning *nnetworks = create_nework_qlearning( pconf, randomize, minR, maxR, randomRange, @@ -465,8 +465,8 @@ TEST(first_learn_vehicle_rev50_8){ learning_rate ); -EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_20240717_01h42m16s_5300.txt"); -EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_20240717_01h42m16s_5300.txt"); +//EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_20240717_01h42m16s_5300.txt"); +//EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_20240717_01h42m16s_5300.txt"); struct status_qlearning *qlstatus = create_status_qlearning (); struct delay_params *dly = create_delay_params ( @@ -478,7 +478,7 @@ struct status_qlearning *qlstatus = create_status_qlearning (); 0.95/*float gamma*/, learning_rate, 0 /* (not used!)float discount_factor*/, - 0.0001 /* 0.99*/ /*float exploration_factor*/, + 0.99, // 0.0001 /* 0.99*/ /*float exploration_factor*/, 20/*long int nb_training_before_update_weight_in_target*/, 10000/*size_t number_episodes*/ ); diff --git a/tensor_t/src/tensor_t/tensor_t.c b/tensor_t/src/tensor_t/tensor_t.c index d7ee726..461d673 100644 --- a/tensor_t/src/tensor_t/tensor_t.c +++ b/tensor_t/src/tensor_t/tensor_t.c @@ -399,6 +399,11 @@ void print_tensor_msg_##type(tensor_##type *T,char *msg) {\ printf(" |#%ld]: %s, ",i,val);\ /*printf(" %s, ",val);*/\ free(val); val=NULL;\ + if(T->x[i] != T->x[i]){\ + printf("\nALERT NAN\n");\ + char c;\ + scanf("%c",&c);\ + }\ if(coord[begin]==(T->dim)->perm[begin]-1){\ size_t count=0;\ for(long int j=begin; cond(j,end); j = iter(j)){\ diff --git a/y_socket/Makefile b/y_socket/Makefile new file mode 100644 index 0000000..9ccbb03 --- /dev/null +++ b/y_socket/Makefile @@ -0,0 +1,76 @@ +# lib: -lysocket +PROJECT_LIB=libysocket.so +CC=gcc +INCLUDE_DIRS=$(PWD) +SOCDIR=$(PWD) +#$(wildcard $(PWD)/**/include) + + +INCLUDE=-I$(PWD)/include +CFLAGS=-g -lpthread -Wall -Werror -fpic $(INCLUDE) #"-D DEBUG=1" +#LDFLAGS= + +TOPTARGETS := all clean #update_headers + +#SRC=$(wildcard y*/src/**/**/*.c) +SRC=$(wildcard src/*/*.c) +OBJ=$(SRC:.c=.o) + +#SUBDIRS :=$(wildcard y*) $(TOOLDIR) $(BARPDIR) + +#export + + +#$(TOPTARGETS): $(SUBDIRS) + +all: $(PROJECT_LIB) + +#update_headers + + +$(PROJECT_LIB): $(OBJ) + echo $(OBJ) + #$(CC) -shared -o $@ $^ $(INCLUDE) $(LDFLAGS) + #$(CC) -shared -o $@ $^ $(LDFLAGS) + $(CC) -shared -o $@ $^ $(CFLAGS) + + +$(SUBDIRS): + $(MAKE) -C $@ $(MAKECMDGOALS) + + +# .PHONY: $(TOPTARGETS) $(SUBDIRS) + +.PHONY: clean + +clean: + rm -f $(OBJ) + +mrproper: clean + rm -f $(PROJECT_LIB) + +install: + cp libytest.so /usr/lib/ + @if [ -d /usr/local/include ] ; then\ + echo "copy include to /usr/local/include/" ;\ + cp -r include/* /usr/local/include/;\ + else\ + echo "copy include to /usr/include/" ;\ + cp -r include/* /usr/include/;\ + fi + +uninstall: + rm /usr/lib/libytest.so + @if [ -d /usr/local/include ] ; then\ + echo "remove from /usr/local/include/" ;\ + rm -r /usr/local/include/y_socket ;\ + else\ + echo "remove from /usr/include/" ;\ + rm -r /usr/include/y_socket ;\ + fi + + +#SRC_test=test/is_good.c + +#compile: $(SRC_test) $(PROJECT_LIB) +# $(CC) -o launch_is_good_m $< -L. test/src/permutation_t/permutation_t.o test/src/set_theoric_t/set_theoric_t.o -lytest -I./test/src -I./include_ytest diff --git a/y_socket/include/y_socket/y_client.h b/y_socket/include/y_socket/y_client.h new file mode 100644 index 0000000..7327068 --- /dev/null +++ b/y_socket/include/y_socket/y_client.h @@ -0,0 +1,24 @@ +#ifndef Y_CLIENT_H__C +#define Y_CLIENT_H__C + + +#include + +#include "y_socket/y_socket.h" + + + +struct y_client{ + size_t id; + struct y_socket_t *socket; + int nb_threads; + pthread_t *thread_client; + pthread_mutex_t *mut_client; + + void *(*launch)(void*); + +}; + + + +#endif /* Y_CLIENT_H__C */ diff --git a/y_socket/include/y_socket/y_queue.h b/y_socket/include/y_socket/y_queue.h new file mode 100644 index 0000000..43376f9 --- /dev/null +++ b/y_socket/include/y_socket/y_queue.h @@ -0,0 +1,8 @@ +#ifndef __Y_QUEUE_T_H__ +#define __Y_QUEUE_T_H__ + +#include "y_socket/y_threads.h" + + + +#endif /*__Y_QUEUE_T_H__*/ diff --git a/y_socket/include/y_socket/y_server.h b/y_socket/include/y_socket/y_server.h new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/y_socket/include/y_socket/y_server.h @@ -0,0 +1,29 @@ +#ifndef Y_SERVER_H__C +#define Y_SERVER_H__C + +#include + +#include "y_socket/y_socket.h" + + + +struct y_server_t{ + struct y_socket_t *socket; +// struct y_client_t *client; +// int nb_clients; + + +// int max_length_queue; //backlog;// max connexion + + pthread_t *thread_server; + pthread_mutex_t *mut_server; + int nb_threads; + + + void *(*launch)(void*); + +}; + + + +#endif /* Y_SERVER_H__C */ diff --git a/y_socket/include/y_socket/y_socket.h b/y_socket/include/y_socket/y_socket.h new file mode 100644 index 0000000..2a8eb40 --- /dev/null +++ b/y_socket/include/y_socket/y_socket.h @@ -0,0 +1,42 @@ +#ifndef Y_SOCKET_H__C +#define Y_SOCKET_H__C + +#include +#include +#include +#include + +#include + +#include + +#include + +#include + +#include + +#include + +struct y_socket_t{ + int fd; /* Socket descriptor, */ + int domain; /*AF_INET, AF_INET6 */ + int service; /*type: SOCK_STREAM: TCP, SOCK_DGRAM: UDP */ + int protocol; /* 0 */ + u_long interface; + int port; + int backlog;/*max_queue */ + + struct sockaddr_in *address; /* INADDR_ANY or */ + int address_len; +}; + +struct y_socket_t * socket_create(int domain, int service, int protocol, u_long interface, + int port, int backlog); + +void socket_destroy(struct y_socket_t *socket); + + + + +#endif /* Y_SOCKET_H__C */ diff --git a/y_socket/include/y_socket/y_threads.h b/y_socket/include/y_socket/y_threads.h new file mode 100644 index 0000000..c933a80 --- /dev/null +++ b/y_socket/include/y_socket/y_threads.h @@ -0,0 +1,18 @@ +#ifndef __Y_THREAD_H__ +#define __Y_THREAD_H__ + + +#include + +#include "y_socket/y_queue.h" + + +struct y_threadpool{ + int nb_threads; + pthread_cond_t cond_; + pthread_mutex_t mut_; + pthread_t *thread; + void *(*launch)(void* arg); + +}; +#endif /*__Y_THREAD_H__*/ diff --git a/y_socket/src/y_socket/y_client.c b/y_socket/src/y_socket/y_client.c new file mode 100644 index 0000000..4884c20 --- /dev/null +++ b/y_socket/src/y_socket/y_client.c @@ -0,0 +1 @@ +#include "y_socket/y_client.h" diff --git a/y_socket/src/y_socket/y_queue.c b/y_socket/src/y_socket/y_queue.c new file mode 100644 index 0000000..b4b72c8 --- /dev/null +++ b/y_socket/src/y_socket/y_queue.c @@ -0,0 +1 @@ +#include "y_socket/y_queue.h" diff --git a/y_socket/src/y_socket/y_server.c b/y_socket/src/y_socket/y_server.c new file mode 100644 index 0000000..a778b6f --- /dev/null +++ b/y_socket/src/y_socket/y_server.c @@ -0,0 +1,2 @@ +#include "y_socket/y_server.h" + diff --git a/y_socket/src/y_socket/y_socket.c b/y_socket/src/y_socket/y_socket.c new file mode 100644 index 0000000..9577a04 --- /dev/null +++ b/y_socket/src/y_socket/y_socket.c @@ -0,0 +1,34 @@ +#include "y_socket/y_socket.h" + +#if 0 +struct y_server_t server; + +void close_server(struct y_server_t server){ + char *message ="HTTP/1.1 201 OK\r\n" + "Connection: close"; + + for(int i=0; i +#include +#include + +// for sleep ! +#ifdef __linux__ + #include +#elif _WIN32 + #include +#endif + +#include "ftest/ftest.h" +#include "ftest/ftest_array.h" +#include "fmock/fmock.h" + + +//#include "permutation_t/permutation_t.h" +#include "y_socket/y_socket.h" + +#define VALGRIND_ 1 + +TEST(first){ + + LOG("hey%s\n"," you"); + +} + + +int main(int argc, char **argv){ + + + run_all_tests_args(argc, argv); + + return 0; +}