/********************************************************* ****************** Main Function ****************** *********************************************************/ int main(int agrc, char *agrv[]) { /* return value of function main */ int ret = 0; if (agrc < 2) return 0; set_app_state_file_path(app_file_path); if (!strcmp(agrv[1], "state")) { ret = app_state(); print_app_state(app_name, ret); } else if (!strcmp(agrv[1], "start")) { ret = app_start(); } else if (!strcmp(agrv[1], "stop")) { ret = app_stop(); } else if (!strcmp(agrv[1], "restart")) { ret = app_stop(); sleep(1); ret = app_start(); } return ret; }
/* This function is called by the driver when an interrupt is serviced. */ void user_isr() { // check if this interrupt was due to an I2C error uint16_t I2CErrors = get_i2c_errors(); if (I2CErrors != 0) { ack_i2c_error(); // disable and enable the app. to leave "error" state app_stop(); app_start(); return; } // handle new value uint16_t SensorValue = app_get_value(); // ... }
void host_clean_up(void) { DWORD disposition; char **pext; char *u3_device_serial; char reg_key[BUFSIZ]; /* the device has been removed - just close the application as quickly as possible */ app_stop(0); /* DELETE THE FILE ASSOCIATIONS */ for(pext = extensions; *pext; pext++) disassociate(*pext); /* update icons */ SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0); /* DELETE THE U3 Wireshark TYPE */ strncpy(reg_key, WIRESHARK_ASSOC, strlen(WIRESHARK_ASSOC) + 1); strncat(reg_key, SHELL_OPEN_COMMAND, strlen(SHELL_OPEN_COMMAND) + 1); RegDeleteKey(HKEY_CLASSES_ROOT, reg_key); /* delete the open key */ strncpy(reg_key, WIRESHARK_ASSOC, strlen(WIRESHARK_ASSOC) + 1); strncat(reg_key, SHELL_OPEN, strlen(SHELL_OPEN) + 1); RegDeleteKey(HKEY_CLASSES_ROOT, reg_key); /* delete the shell key */ strncpy(reg_key, WIRESHARK_ASSOC, strlen(WIRESHARK_ASSOC) + 1); strncat(reg_key, SHELL, strlen(SHELL) + 1); RegDeleteKey(HKEY_CLASSES_ROOT, reg_key); /* delete the icon key */ strncpy(reg_key, WIRESHARK_ASSOC, strlen(WIRESHARK_ASSOC) + 1); strncat(reg_key, DEFAULT_ICON, strlen(DEFAULT_ICON) + 1); RegDeleteKey(HKEY_CLASSES_ROOT, reg_key); /* finally delete the toplevel key */ RegDeleteKey(HKEY_CLASSES_ROOT, WIRESHARK_ASSOC); uninstall(WINPCAP_KEY, WINPCAP_U3INSTALLED, WINPCAP_UNINSTALL); uninstall(VCREDIST_KEY, VCREDIST_U3INSTALLED, VCREDIST_UNINSTALL); }
/* This function is called by the driver when an interrupt is serviced. */ void user_isr() { // check if this interrupt was due to an I2C error uint16_t I2CErrors = get_i2c_errors(); if (I2CErrors != 0) { ack_i2c_error(); // disable and enable the app. to leave "error" state app_stop(); app_start(); return; } // handle new value #ifdef SIMULATION uint16_t SensorValue = app_get_value(); #else printf("New value: "); PrintSensorValue(); printf("\r\n"); #endif }
main(int argc, char *argv[]) { DWORD time_out = 0; char *u3_is_device_available; #if 0 char **envptr; char *envval; # endif u3_is_device_available = getenv("U3_IS_DEVICE_AVAILABLE"); if(u3_is_device_available && !strncmp(u3_is_device_available, "true", 4)) /* the device is available - wait for user to respond to any dialogs */ time_out = INFINITE; #if 0 for(envptr = environmentvars; *envptr; envptr++) { envval = getenv(*envptr); MessageBox(NULL, envval ? envval : "NULL", *envptr, MB_YESNO|MB_TOPMOST|MB_ICONQUESTION); } #endif if(argc > 1) { if(!strncmp(argv[1], "hostConfigure", 13)) host_configure(); else if(!strncmp(argv[1], "appStart", 9)) app_start(argc, argv); else if(!strncmp(argv[1], "appStop", 8)) app_stop(time_out); else if(!strncmp(argv[1], "hostCleanUp", 11)) host_clean_up(); } exit(0); }