static void on_state_variable_changed (GUPnPServiceProxy *proxy, const char *variable_name, GValue *value, gpointer user_data) { GUPnPServiceInfo *info = GUPNP_SERVICE_INFO (proxy); GUPnPDeviceInfo *device_info; GValue str_value; char *id; char *friendly_name; char *notified_at; struct tm *tm; time_t current_time; /* Get the parent device */ device_info = get_service_device (info); g_return_if_fail (device_info != NULL); friendly_name = gupnp_device_info_get_friendly_name (device_info); g_object_unref (device_info); id = gupnp_service_info_get_id (info); /* We neither keep devices without friendlyname * nor services without an id */ g_assert (friendly_name != NULL); g_assert (id != NULL); memset (&str_value, 0, sizeof (GValue)); g_value_init (&str_value, G_TYPE_STRING); g_value_transform (value, &str_value); current_time = time (NULL); tm = localtime (¤t_time); notified_at = g_strdup_printf ("%02d:%02d", tm->tm_hour, tm->tm_min); display_event (notified_at, friendly_name, id, variable_name, g_value_get_string (&str_value)); g_free (notified_at); g_free (friendly_name); g_free (id); g_value_unset (&str_value); }
int get_hab_status(void) { uint32_t index = 0; /* Loop index */ uint8_t event_data[128]; /* Event data buffer */ size_t bytes = sizeof(event_data); /* Event size in bytes */ enum hab_config config = 0; enum hab_state state = 0; hab_rvt_report_event_t *hab_rvt_report_event; hab_rvt_report_status_t *hab_rvt_report_status; hab_rvt_report_event = hab_rvt_report_event_p; hab_rvt_report_status = hab_rvt_report_status_p; if (is_hab_enabled()) puts("\nSecure boot enabled\n"); else puts("\nSecure boot disabled\n"); /* Check HAB status */ if (hab_rvt_report_status(&config, &state) != HAB_SUCCESS) { printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n", config, state); /* Display HAB Error events */ while (hab_rvt_report_event(HAB_FAILURE, index, event_data, &bytes) == HAB_SUCCESS) { puts("\n"); printf("--------- HAB Event %d -----------------\n", index + 1); puts("event data:\n"); display_event(event_data, bytes); puts("\n"); bytes = sizeof(event_data); index++; } } /* Display message if no HAB events are found */ else { printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n", config, state); puts("No HAB Events Found!\n\n"); } return 0; }
int main(int argc, char *argv[]) { libbase::cputimer tmain("Main timer"); // Set up user parameters po::options_description desc("Allowed options"); desc.add_options()("help", "print this help message"); desc.add_options()("system-file,i", po::value<std::string>(), "input file containing system description"); desc.add_options()("parameter,r", po::value<double>(), "simulation parameter"); desc.add_options()("seed,s", po::value<libbase::int32u>(), "system initialization seed (random if not stated)"); desc.add_options()("show-all,a", po::bool_switch(), "show all simulated frames (not just first error event)"); po::variables_map vm; po::store(po::parse_command_line(argc, argv, desc), vm); po::notify(vm); // Validate user parameters if (vm.count("help") || vm.count("system-file") == 0 || vm.count("parameter") == 0) { cout << desc << std::endl; return 0; } // Interpret user parameters const bool showall = vm["show-all"].as<bool> (); // Simulation system & parameters libcomm::experiment *system = createsystem( vm["system-file"].as<std::string> ()); system->set_parameter(vm["parameter"].as<double> ()); // Initialise running values system->reset(); if (vm.count("seed")) seed_experiment(system, vm["seed"].as<libbase::int32u>()); else seed_experiment(system); cerr << "Simulating system at parameter = " << system->get_parameter() << std::endl; // Simulate, waiting for an error event libbase::vector<double> result; do { cerr << "Simulating sample " << system->get_samplecount() << std::endl; system->sample(result); system->accumulate(result); if (showall) { cerr << "Event for sample " << system->get_samplecount() << ":" << std::endl; display_event(system); } } while (result.min() == 0); cerr << "Event found after " << system->get_samplecount() << " samples" << std::endl; // Display results if necessary if (!showall) display_event(system); // Destroy what was created on the heap delete system; return 0; }