From 7d6a8fecbec910873ca46916f5edc2d33007d17c Mon Sep 17 00:00:00 2001 From: JayPiKay Date: Sun, 27 Aug 2017 17:36:18 +0200 Subject: [PATCH] Proof of concept to handle lights --- lw12.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lw12.h | 19 +++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 lw12.c create mode 100644 lw12.h diff --git a/lw12.c b/lw12.c new file mode 100644 index 0000000..a3258e8 --- /dev/null +++ b/lw12.c @@ -0,0 +1,66 @@ +/* + * lw12.c + * Copyright (C) 2017 jpk + * + * Distributed under terms of the MIT license. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +//#include + +#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; +} diff --git a/lw12.h b/lw12.h new file mode 100644 index 0000000..b829108 --- /dev/null +++ b/lw12.h @@ -0,0 +1,19 @@ +/* + * lw12.h + * Copyright (C) 2017 jpk + * + * Distributed under terms of the MIT license. + */ + +#ifndef LW12_H +#define LW12_H + +#define LW12_CMD_LENGTH 9 + +#define LIGHTS_ON "\x7e\x04\x04\x01\xff\xff\xff\x00\xef" +#define LIGHTS_OFF "\x7e\x04\x04\x00\x00\x0f\xff\x00\xef" + +// set lights "7e070503{red:02x}{green:02x}{blue:02x}00ef" +#define LIGHT_COLOR "\x7\xe\x07\x05\x03\x00\x00\x00\x00\xef" + +#endif /* !LW12_H */