コード例 #1
0
ファイル: user_mod_finger.c プロジェクト: habashynn/ESP8266
LOCAL void ICACHE_FLASH_ATTR finger_params_ready(finger_packet *packet) {
	char response[WEBSERVER_MAX_RESPONSE_LEN];
	char data_str[WEBSERVER_MAX_VALUE];
	
	json_data(
		response, MOD_FINGER, OK_STR,
		json_sprintf(
			data_str,
			"\"Address\" : \"0x%08X\", "
			"\"DBSize\" : %d, "
			"\"DBStored\" : %d, "
			"\"FirstFree\" : %d, "
			"\"SecurityLevel\" : %d, "
			"\"Mode\" : \"%s\"",
			finger_address(), 
			finger_db_size(),
			finger_db_stored(),
			finger_first_free_id(),
			finger_security_level(),
			finger_mode_str(finger_current_mode)
		),
		NULL
	);
	
	user_event_raise(FINGER_URL, response);
}
コード例 #2
0
ファイル: user_mod_finger.c プロジェクト: habashynn/ESP8266
LOCAL void ICACHE_FLASH_ATTR finger_find_done(finger_packet *packet) {
	if (packet->data[0] != FINGER_OK) {
		finger_default(packet);
		finger_start_read();
		return;
	}
	
	uint16 id = packet->data[1]*256 + packet->data[2];
	uint16 score = packet->data[3]*256 + packet->data[4];
	
	char response[WEBSERVER_MAX_VALUE];
	char data[WEBSERVER_MAX_VALUE];
	json_status(
		response, MOD_FINGER, "Match found",
		json_sprintf(
			data,
			"\"Match\" : {\"ID\" : %d, \"Score\" : %d}",
			id,
			score
		)
	);
	
#if FINGER_DEBUG
	debug("FINGER: Match: ID = %d, Score = %d\n", id, score);
#endif
	
	user_event_raise(FINGER_URL, response);
	finger_start_read();
}
コード例 #3
0
ファイル: user_mod_finger.c プロジェクト: habashynn/ESP8266
LOCAL void ICACHE_FLASH_ATTR finger_save_done(finger_packet *packet) {
	finger_current_mode = FINGER_READ;
	
	if (packet->data[0] != FINGER_OK) {
		finger_default(packet);
		finger_frech_params();
		finger_start_read();
		return;
	}
	
	char response[WEBSERVER_MAX_VALUE];
	char data[WEBSERVER_MAX_VALUE];
	json_status(
		response, MOD_FINGER, 
		"New fingerprint stored",
		json_sprintf(data, "\"ID\" : %d", finger_first_free_id())
	);
	
#if FINGER_DEBUG
	debug("FINGER: Stored: ID = %d\n", finger_first_free_id());
#endif
	
	user_event_raise(FINGER_URL, response);
	finger_frech_params();
	finger_start_read();
}
コード例 #4
0
ファイル: user_mod_finger.c プロジェクト: atembedded/ESP8266
LOCAL void ICACHE_FLASH_ATTR finger_timeout(finger_packet *packet) {
	char response[WEBSERVER_MAX_VALUE];
	finger_clear_timeout(packet);
	json_error(response, MOD_FINGER, TIMEOUT, NULL);
	user_event_raise(FINGER_URL, response);
	finger_start_read();
}
コード例 #5
0
ファイル: user_dimmer.c プロジェクト: atembedded/ESP8266
LOCAL void ICACHE_FLASH_ATTR dimmer_event(i2c_config *config) {
	LOCAL uint8 count = 0;
	i2c_status status;
	
	dimmer_config_data *config_data = (dimmer_config_data *)config->data;
	uint8  old_relay = config_data->relay;
	uint8  old_brightness = config_data->brightness;
	uint16 old_current = config_data->current;
	
	count++;
	uint8 addr = config->address;
	dimmer_init(&addr, &status);
	
	if (
		status == I2C_OK && 
		(
			config_data->relay != old_relay ||
			config_data->brightness != old_brightness ||
			abs(config_data->current - old_current) > dimmer_threshold || 
			(count > dimmer_each && config_data->current != old_current)
		)
	) {
		count = 0;
		
		char response[WEBSERVER_MAX_VALUE];
		dimmer_response(config, response, false);
		user_event_raise(DIMMER_URL, response);
	}
	
	if (count > dimmer_each) {
		count = 0;
	}
}
コード例 #6
0
ファイル: user_mod_tc_mk2.c プロジェクト: timmyhadwen/ESP8266
LOCAL void ICACHE_FLASH_ATTR mod_tc_mk2_event(i2c_config *config) {
	char response[WEBSERVER_MAX_RESPONSE_LEN];
	LOCAL sint16 old_temperature = 0;
	LOCAL uint8 count = 0;

	i2c_status status;
	
	tc_config_data *config_data = (tc_config_data *)config->data;
	uint8 addr = config->address;
	tc_init(&addr, &status);
	if (status != I2C_OK) {
		return;
	}
	
	count++;
	
	mod_tc_mk2_read(config, response, false);
	if (abs(config_data->temperature - old_temperature) > tc_threshold || (count > tc_each && config_data->temperature != old_temperature)) {
#if MOD_TC_MO2_DEBUG
		debug("MOD-TC-MK2: Temperature change [%d] -> [%d]\n", old_temperature, config_data->temperature);
#endif		
		count = 0;
		old_temperature = config_data->temperature;
		
		user_event_raise(MOD_TC_MK2_URL, response);
	}
}
コード例 #7
0
ファイル: user_wifi_scan.c プロジェクト: zazolabs/ESP8266
void ICACHE_FLASH_ATTR wifi_scan_done(void *arg, STATUS status) {
	wifi_scan_in_progress = false;
	wifi_scan_clean();
	
	if (status != OK) {
		return;
	}
	
	// count AP data
	struct bss_info *ap = (struct bss_info *)arg;
	while (ap = ap->next.stqe_next) {
		wifi_scan_ap_count++;
		debug("SSID: [%s] Strength [%d] Mode: [%d]\n", ap->ssid, ap->rssi, ap->authmode);
	}
	
	// Store AP data
	wifi_scan_result = (ap_info **)os_malloc(sizeof(ap_info *) * wifi_scan_ap_count);
	
	uint8 i=0;
	ap = (struct bss_info *)arg;
	while (ap = ap->next.stqe_next) {
		wifi_scan_result[i] = (ap_info *)os_malloc(sizeof(ap_info));
		os_memcpy(wifi_scan_result[i]->ssid, ap->ssid, 32);
		wifi_scan_result[i]->rssi = ap->rssi;
		wifi_scan_result[i]->authmode = ap->authmode;
		i++;
	}
	
	setTimeout(wifi_scan_clean, NULL, 30000);
	
	char response[WEBSERVER_MAX_RESPONSE_LEN];
	
	wifi_scan_get_result(response);
	user_event_raise(WIFI_SCAN_URL, response);
}
コード例 #8
0
ファイル: user_mod_finger.c プロジェクト: habashynn/ESP8266
LOCAL void ICACHE_FLASH_ATTR finger_default(finger_packet *packet) {
	if (packet->pid == FINGER_ACK && packet->data[0] != FINGER_OK) {
		char response[WEBSERVER_MAX_VALUE];
		json_error(response, MOD_FINGER, finger_error_str(packet->data[0]), NULL);
		user_event_raise(FINGER_URL, response);
	}
}
コード例 #9
0
ファイル: user_relay.c プロジェクト: toome123/ESP8266
LOCAL void ICACHE_FLASH_ATTR user_relay_off() {
char response[WEBSERVER_MAX_VALUE];
	relay_timer = 0;
	user_relay_set(0);
	
	user_relay_state(response);
	user_event_raise(RELAY_URL, response);
}
コード例 #10
0
ファイル: user_events.c プロジェクト: zazolabs/ESP8266
void ICACHE_FLASH_ATTR user_event_connect() {
#if EVENTS_DEBUG
	debug("EVENTS: Station connected\n");
	debug("Free heap: %d\n\n", system_get_free_heap_size());
#endif
	char status[WEBSERVER_MAX_VALUE];
	user_event_raise(NULL, json_status(status, ESP8266, CONNECTED, NULL));
}
コード例 #11
0
ファイル: user_mod_emtr.c プロジェクト: kzyapkov/ESP8266
LOCAL void ICACHE_FLASH_ATTR emtr_timeout() {
	char response[WEBSERVER_MAX_VALUE];
	json_error(response, MOD_EMTR, TIMEOUT, NULL);
	user_event_raise(EMTR_URL, response);
	
	emtr_clear_timeout();
	emtr_start_read();
}
コード例 #12
0
ファイル: user_relay.c プロジェクト: toome123/ESP8266
uint8 ICACHE_FLASH_ATTR user_relay_toggle() {
char response[WEBSERVER_MAX_VALUE];
	user_relay_set(2);
	
	user_relay_state(response);
	user_event_raise(RELAY_URL, response);
	
	return relay_state;
}
コード例 #13
0
ファイル: user_events.c プロジェクト: habashynn/ESP8266
void ICACHE_FLASH_ATTR user_event_reconnect() {
#if EVENTS_DEBUG
	debug("EVENTS: Reconnect station\n");
#endif
	char status[WEBSERVER_MAX_VALUE];
	user_event_raise(NULL, json_status(status, ESP8266, RECONNECT, NULL));
	websocket_close_all(RECONNECT, NULL);
	long_poll_close_all();
}
コード例 #14
0
ファイル: user_events.c プロジェクト: habashynn/ESP8266
void ICACHE_FLASH_ATTR user_event_connect() {
#if EVENTS_DEBUG
	debug("EVENTS: Station connected\n");
	memory_info();
#endif
	char status[WEBSERVER_MAX_RESPONSE_LEN];
	user_event_raise(
		USER_CONFIG_STATION_URL, 
		json_data(status, ESP8266, CONNECTED, (char *)config_wifi_station(), NULL)
	);
}
コード例 #15
0
ファイル: user_events.c プロジェクト: modSwap/ESP8266
void ICACHE_FLASH_ATTR user_event_system_timer() {
	char status[WEBSERVER_MAX_RESPONSE_LEN];
	char data[WEBSERVER_MAX_RESPONSE_LEN];
	user_event_raise(
		NULL, 
		json_status(
			status, ESP8266, "SysTimer", 
			json_sprintf(
				data,
				"\"Timer\": %d",
				system_get_time()
			)
		)
	);
}
コード例 #16
0
ファイル: user_button.c プロジェクト: atembedded/ESP8266
LOCAL void ICACHE_FLASH_ATTR button_set_response(char *state) {
	char response[WEBSERVER_MAX_VALUE];
	debug("BUTTON: %s\n", state);
	
	char data[WEBSERVER_MAX_VALUE];
	json_data(
		response, ESP8266, OK_STR,
		json_sprintf(
			data,
			"\"Button\" : \"%s\"",
			state
		),
		NULL
	);
	
	user_event_raise(BUTTON_URL, response);
}
コード例 #17
0
void ICACHE_FLASH_ATTR adc_update() {
	LOCAL uint16 old_state = 0;
	LOCAL uint8 count = 0;
	char response[WEBSERVER_MAX_VALUE];
	
	adc_read(response, false);
	count++;
	
	if (abs(state - old_state) > adc_threshold || (count >= adc_each && state != old_state)) {
#if ADC_DEBUG
		debug("ADC: Change [%d] -> [%d]\n", old_state, state);
#endif
		old_state = state;
		count = 0;
		
		user_event_raise(ADC_URL, response);
	}
}
コード例 #18
0
void ICACHE_FLASH_ATTR mod_led_8x8_rgb_scroll_done() {
	char status[WEBSERVER_MAX_VALUE];
	user_event_raise(MOD_LED_8x8_RGB_URL, json_status(status, MOD_LED8x8RGB, DONE, NULL));
}
コード例 #19
0
ファイル: user_mod_emtr.c プロジェクト: kzyapkov/ESP8266
LOCAL void ICACHE_FLASH_ATTR emtr_read_done(emtr_packet *packet) {
	LOCAL emtr_output_registers *registers = NULL;
	LOCAL uint32 time = 0;
	LOCAL uint32 interval = 0;
	LOCAL uint32 now = 0;
	
	now = system_get_time();
	interval = (time != 0) ? 
		(now - time) / 1000
		: 
		0
	;
	time = now;
	
	if (registers == NULL) {
		registers = (emtr_output_registers *)os_zalloc(sizeof(emtr_output_registers));
	}
	
	emtr_parse_output(packet, registers);
	
	char event_str[20];
	os_memset(event_str, 0, sizeof(event_str));
	
	char response[WEBSERVER_MAX_RESPONSE_LEN];
	char data_str[WEBSERVER_MAX_RESPONSE_LEN];
	json_data(
		response, MOD_EMTR, OK_STR,
		json_sprintf(
			data_str,
			"\"Address\" : \"0x%04X\", "
			"\"CounterActive\" : %d, "
			"\"CounterApparent\" : %d, "
			"\"Interval\" : %d, "
			
			"\"CurrentRMS\" : %d, "
			"\"VoltageRMS\" : %d, "
			"\"ActivePower\" : %d, "
			"\"ReactivePower\" : %d, "
			"\"ApparentPower\" : %d, "
			"\"PowerFactor\" : %d, "
			"\"LineFrequency\" : %d, "
			"\"ThermistorVoltage\" : %d, "
			"\"EventFlag\" : %d, "
			"\"SystemStatus\" : \"0x%04X\"",
			emtr_address(),
			emtr_counter_active(),
			emtr_counter_apparent(),
			interval,
			
			registers->current_rms,
			registers->voltage_rms,
			registers->active_power,
			registers->reactive_power,
			registers->apparent_power,
			registers->power_factor,
			registers->line_frequency,
			registers->thermistor_voltage,
			registers->event_flag,
			registers->system_status
		),
		NULL
	);
	
	emtr_counter_add(
		registers->active_power * interval / 1000, 
		registers->apparent_power * interval / 1000
	);
	
	user_event_raise(EMTR_URL, response);
	emtr_start_read();
	
	if (registers->event_flag != 0) {
		emtr_clear_event(registers->event_flag, NULL);
	}
}
コード例 #20
0
ファイル: user_switch2.c プロジェクト: modSwap/ESP8266
LOCAL void ICACHE_FLASH_ATTR user_switch2_event() {
	char response[WEBSERVER_MAX_VALUE];
	user_switch2_state(response);
	user_event_raise(SWITCH2_URL, response);
}