Beispiel #1
0
uint8_t page_path_stack_pop(void)
{
    uint8_t page_id;

    if (page_stack_ptr == 0)
    {
        load_error_page(ERROR_PAGE_PAGE_STACK_UNDERFLOW);
        print_page();
        return 255;
    }

    page_id = page_stack[--page_stack_ptr];

    return page_id;
}
Beispiel #2
0
gboolean
cog_handle_web_view_load_failed (WebKitWebView  *web_view,
                                 WebKitLoadEvent load_event,
                                 char           *failing_uri,
                                 GError         *error,
                                 void           *userdata)
{
    // If the resource is going to be shown by a plug-in (or a
    // media engine) just return FALSE and let WebKit handle it.
    if (g_error_matches (error,
                         WEBKIT_PLUGIN_ERROR,
                         WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD))
        return FALSE;

    return load_error_page (web_view,
                            failing_uri,
                            "Page load error",
                            error ? error->message : "No error message");
}
static void monitor_insert_reedkontakt_state(uint8_t gruppe, uint8_t state)
{
	eds_block_p it = eds_find_next_block((eds_block_p)0, EDS_userpanel_reedkontakte_BLOCK_ID);
	if (!it)
	{
		load_error_page(ERROR_CONF_REEDKONTAKTE_MISSING);
		return;
	}
	userpanel_reedkontakte_t c;
	eeprom_read_block(&c, (it+2), sizeof(c)); // Ist ein EEPROM-Zugriff, daher langsamer!

	uint8_t i;
	for (i = 0; i < 24; i++)
	{
		if (gruppe == c.reed[i])
		{
			//canix_syslog_P(SYSLOG_PRIO_DEBUG, PSTR("g%d %d"), i, state);
			monitor_reedkontakt_state[i] = state;
		}
	}
}
/**
 * Fragt alle konfigurierten Reedkontakte nach ihrem Status und sammelt
 * die Ergebnisse in monitor_reedkontakt_state
 */
static void init_monitor_reedkontakt_request_states(void)
{
	eds_block_p it = eds_find_next_block((eds_block_p)0, EDS_userpanel_reedkontakte_BLOCK_ID);
	if (!it)
	{
		load_error_page(ERROR_CONF_REEDKONTAKTE_MISSING);
		reedkontakt_configured = 0;
		return;
	}

	userpanel_reedkontakte_t c;
	eeprom_read_block(&c, (it+2), sizeof(c));
	uint8_t i;

	// Ergebnis-Array initialisieren:
	for (i = 0; i < 24; i++)
		monitor_reedkontakt_state[i] = 255;

	// ueber alle Reedkontakte iterieren:
	for (i = 0; i < 24; i++)
	{
		if (c.reed[i] != 255) // ist es ein konfigurierter Reedkontakt?
		{
			// Nach Kontakt-Status fragen; die Ergebnisse kommen asynchron
			// ueber den CAN Handler rein
			canix_frame message;
			message.src = canix_selfaddr();
			message.dst = HCAN_MULTICAST_CONTROL;
			message.proto = HCAN_PROTO_SFP;
			message.data[0] = HCAN_SRV_HES;
			message.data[1] = HCAN_HES_REEDKONTAKT_STATE_QUERY;
			message.data[2] = c.reed[i]; // die Reedkontakt-Gruppen-ID
			message.size = 3;
			canix_frame_send_with_prio(&message, HCAN_PRIO_LOW);

			canix_sleep_100th(10); // 100msec Pause
		}
		wdt_reset();
	}
}