#include #include #include #include #include #include #include #ifdef __APPLE2__ #include #endif #include "../inc/ip65.h" #include "ifttt.h" char key[80 + 1]; char text[280 + 1]; void error_exit(void) { printf("- %s\n", ip65_strerror(ip65_error)); exit(EXIT_FAILURE); } void confirm_exit(void) { printf("\nPress any key "); cgetc(); } unsigned char cols(void) { unsigned char cols, rows; screensize(&cols, &rows); return cols; } void input(char* str, unsigned int max, const char* tag) { char chr; uint8_t row; uint16_t len = max / cols() + 1; for (row = len; --row; row) { putchar('\n'); } row = wherey() - len; len = 0; while (true) { str[len] = '\0'; gotoxy(0, row); cprintf("%s (%d/%d) \r\n%s", tag, len, max, str); cursor(1); chr = cgetc(); cursor(0); if (chr == CH_ENTER) { break; } if (chr == CH_DEL) { if (len == 0) { continue; } if (wherex() > 0) { gotox(wherex() - 1); } else { gotoxy(cols() - 1, wherey() - 1); } cputc(' '); --len; continue; } if (len == max) { continue; } if (isprint(chr)) { str[len++] = chr; } } } int main(void) { int retval; uint8_t eth_init = ETH_INIT_DEFAULT; if (doesclrscrafterexit()) { atexit(confirm_exit); } { int file; printf("\nLoading key "); file = open("ifttt.key", O_RDONLY); if (file != -1) { read(file, key, sizeof(key)); close(file); printf("- Ok\n"); } else { printf("- Failed\n\n\n"); input(key, sizeof(key) - 1, "IFTTT webhook key"); if (*key == '\0') { printf("\n"); return EXIT_FAILURE; } printf("\n\nSaving key "); #ifdef __APPLE2__ _filetype = PRODOS_T_TXT; #endif file = open("ifttt.key", O_WRONLY | O_CREAT | O_TRUNC); if (file != -1) { write(file, key, sizeof(key)); close(file); printf("- Ok\n"); } else { printf("- "); perror(NULL); } } } #ifdef __APPLE2__ { int file; printf("\nSetting slot "); file = open("ethernet.slot", O_RDONLY); if (file != -1) { read(file, ð_init, 1); close(file); eth_init &= 7; } printf("- %u\n", eth_init); } #endif printf("\nInitializing "); if (ip65_init(eth_init)) { error_exit(); } printf("- Ok\n\nObtaining IP address "); if (dhcp_init()) { error_exit(); } printf("- Ok\n\n\n"); input(text, sizeof(text) - 1, "Text"); if (*text == '\0') { printf("\n"); return EXIT_FAILURE; } printf("\n\nSending tweet "); retval = ifttt_trigger(key, "tweet", text, NULL, NULL); if (retval < 0) { error_exit(); } if (retval != 200) { printf("- Error (HTTP status %d)\n", retval); exit(EXIT_FAILURE); } printf("- Ok\n"); return EXIT_SUCCESS; }