#include <sys/stat.h>
#include <fcntl.h>
+#define DOOR_UNLOCKED_DELAY 10 // 10 seconds before it re-locks
+
// === IMPORTS ===
// === PROTOTYPES ===
Door_CanDispense,
Door_DoDispense
};
-//char *gsDoor_SerialPort = "/dev/ttyS0";
+char *gsDoor_Password;
+char *gsDoor_Command;
// int giDoor_SerialFD;
// == CODE ===
-int Door_InitHandler()
-{
-// printf("connecting to door...\n");
-// giDoor_SerialFD = open(gsDoor_SerialPort, O_RDWR);
-// if( giDoor_SerialFD == -1 ) {
-// fprintf(stderr, "ERROR: Unable to open coke serial port ('%s')\n", gsDoor_SerialPort);
-// }
+int Door_InitHandler(void)
+{
+ gsDoor_Command = malloc(sizeof("llogin door -w ")+strlen(gsDoor_Password));
+ sprintf(gsDoor_Command, "llogin door -w %s", gsDoor_Password);
+
return 0;
}
*/
int Door_DoDispense(int User, int Item)
{
+ FILE *pipe;
// Sanity please
if( Item != 0 ) return -1;
return 1;
// llogin or other
+ //pipe = popen(gsDoor_Command, "w");
+ pipe = popen("llogin door -w -", "w");
+ if( !pipe || pipe == (void*)-1 )
+ return -1;
+
+ fputs(gsDoor_Password, pipe); fputs("\n", pipe);
+ fputs("ATH1\n", pipe);
+ sleep(DOOR_UNLOCKED_DELAY);
+ fputs("ATH0\n", pipe);
+
+ pclose(pipe);
return 0;
}