#include #include #include #include #include #include #include #include #include #include "rpc.h" int rpc_docommand(int command, char *buf, int buflen) { int socketfd, count; struct sockaddr_in servaddr; socketfd = socket(AF_INET, SOCK_STREAM, 0); if (socketfd < 0) { perror("socket_open"); return -1; } memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = RPC_ADDR; servaddr.sin_port = RPC_PORT; if (connect(socketfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) { perror("socket_connect"); return -1; } send(socketfd, &command, sizeof(int), 0); count = recv(socketfd, buf, buflen, MSG_WAITALL); close(socketfd); return count; } /* Public functions */ float rpc_temperature_sisa() { float temp = 85.; rpc_docommand(CMD_TEMP_SISA, (char *) &temp, sizeof(float)); return temp; } float rpc_humidity_sisa() { float temp = 85.; rpc_docommand(CMD_HUM_SISA, (char *) &temp, sizeof(float)); return temp; } float rpc_temperature_ulko() { float temp = 85.; rpc_docommand(CMD_TEMP_ULKO, (char *) &temp, sizeof(float)); return temp; }