lw12/lw12.c

67 lines
1.4 KiB
C

/*
* lw12.c
* Copyright (C) 2017 jpk <jpk@dwarf>
*
* Distributed under terms of the MIT license.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
//#include <netdb.h>
#include "lw12.h"
int lw12_connect(int *sockfd, struct sockaddr_in *addr, uint16_t port,
char *hostname) {
if ((*sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
memset((char *)addr, 0, sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
inet_aton(hostname, &addr->sin_addr);
return *sockfd;
}
int lw12_sendcmd(int sockfd, struct sockaddr_in *addr, char *cmd) {
const socklen_t slen = sizeof(struct sockaddr_in);
if (sendto(sockfd, cmd, LW12_CMD_LENGTH, 0, (const struct sockaddr *)addr,
slen) == -1) {
perror("sendto");
close(sockfd);
exit(EXIT_FAILURE);
}
return 0;
}
int main() {
int sockfd = 0;
struct sockaddr_in server_addr;
char serverip[] = "192.168.178.24";
uint16_t serverport = 5000;
lw12_connect(&sockfd, &server_addr, serverport, serverip);
lw12_sendcmd(sockfd, &server_addr, (char *)LIGHTS_ON);
usleep(2000000);
lw12_sendcmd(sockfd, &server_addr, (char *)LIGHTS_OFF);
close(sockfd);
return 0;
}