수위 측정 기본 코드 및 목업 소켓 서버 추가
1. 수위 측정 센서 라즈베리파이 코드 추가
제가 담당한 수위 측정 센서 라즈베리파이에서 아직 HW가 없는 ADC와 수위 센서 부분을 제외 코드를 main에 우선 merge합니다.
수위 측정 기능은 ADC와 센서를 받고 나면 업데이트해 다시 merge하겠습니다.
2. 소켓 통신 규칙
상호간 소켓 연결을 위한 기본 규칙을 몇 가지 추가합니다.
소켓 통신을 위한 서버 IP와 포트는 includes/types.h 에 정의된 것을 사용합니다.
2-1. IP
SERVER_IP
는 우선 임의로 설정해 놓았습니다. 추후 다같이 모여 테스트할 때 확정하면 될 것 같습니다.
2-2. PORT
정의된 포트는 다음과 같습니다.
symbol | port | user |
---|---|---|
SERVER_PORT_1 |
5001 | 김동현 |
SERVER_PORT_2 |
5002 | 김민승 |
SERVER_PORT_3 |
5003 | 오병준 |
소켓 설정 부분은 제가 작성한 코드의 thread_job_socket
에서 init_socket_server
함수 호출을 참고하시면 도움이 될 것 같습니다.
2-3. 통신
복잡한 데이터를 주고받을 것이 아니므로, 통신은 int
형 변수 하나만 주고받기로 하면 좋을 것 같습니다.
클라이언트는 센서 값을 측정해 8비트 unsigned 값 (0~255)으로 변환하고, 해당 값을 int형 변수에 담아 전송합니다.
int value = some_sensor_data();
write(sock, &value, sizeof(value));
서버 또한 동일하게 이 값을 int형 변수로 수신합니다.
int rcv;
read(fd, &rcv, sizeof(rcv));
3. 로컬 목업 소켓 서버
소켓 서버 역할을 하는 동예님의 앰프 라즈베리파이가 없어도 소켓 통신을 테스트할 수 있는 테스트용 소켓 서버를 추가합니다.
사용 방법은 다음과 같습니다. 참고
- 프로젝트 디렉터리에서
make server-mockup
을 실행합니다. -
build/server-mockup
을 실행하면 목업 서버가 시작됩니다. - 자신의 소스코드에서
#define SERVER_MOCK 1
을#include "types.h"
전에 선언합니다.
이렇게 하면 SERVER_IP
가 자신의 로컬호스트 주소 127.0.0.1 로 설정되며, build/server-mockup가 실행하는 서버 소켓과 연결됩니다.