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 (&current_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);
}
Esempio n. 2
0
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;
}
Esempio n. 3
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;
}