vad7 3 lat temu
rodzic
commit
79ce29864a
1 zmienionych plików z 7 dodań i 2 usunięć
  1. 7 2
      nrf24scan.c

+ 7 - 2
nrf24scan.c

@@ -419,9 +419,9 @@ static void prepare_nrf24(bool fsend_packet)
 	uint8_t erx_addr = (1<<0); // Enable RX_P0
 	uint8_t erx_addr = (1<<0); // Enable RX_P0
 	struct ADDRS *adr = what_to_do == 1 ? &addrs_sniff : &addrs;
 	struct ADDRS *adr = what_to_do == 1 ? &addrs_sniff : &addrs;
 	if(!fsend_packet) {
 	if(!fsend_packet) {
-		if(adr->addr_count == 0) return;
 		uint8_t payload = NRF_Payload;
 		uint8_t payload = NRF_Payload;
 		if(what_to_do == 1) { // SNIFF
 		if(what_to_do == 1) { // SNIFF
+			if(adr->addr_count == 0) return;
 			//payload += 5 + NRF_CRC; // + addr_max + CRC
 			//payload += 5 + NRF_CRC; // + addr_max + CRC
 			//if(NRF_ESB)	payload += 2;
 			//if(NRF_ESB)	payload += 2;
 			//if(payload > 32) payload = 32;
 			//if(payload > 32) payload = 32;
@@ -430,7 +430,8 @@ static void prepare_nrf24(bool fsend_packet)
 			nrf24_write_reg(nrf24_HANDLE, REG_SETUP_RETR, 0); // Automatic Retransmission
 			nrf24_write_reg(nrf24_HANDLE, REG_SETUP_RETR, 0); // Automatic Retransmission
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_AA, 0); // Auto acknowledgement
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_AA, 0); // Auto acknowledgement
 			nrf24_write_reg(nrf24_HANDLE, REG_FEATURE, 0); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload
 			nrf24_write_reg(nrf24_HANDLE, REG_FEATURE, 0); // Enables the W_TX_PAYLOAD_NOACK command, Disable Payload with ACK, set Dynamic Payload
-		} else {
+		} else if(what_to_do == 2) {
+			if(adr->addr_count == 0) return;
 			nrf24_write_reg(nrf24_HANDLE, REG_CONFIG, 0x70 | ((NRF_CRC == 1 ? 0b1000 : NRF_CRC == 2 ? 0b1100 : 0))); // Mask all interrupts
 			nrf24_write_reg(nrf24_HANDLE, REG_CONFIG, 0x70 | ((NRF_CRC == 1 ? 0b1000 : NRF_CRC == 2 ? 0b1100 : 0))); // Mask all interrupts
 			nrf24_write_reg(nrf24_HANDLE, REG_SETUP_RETR, NRF_ESB ? 0x01 : 0); // Automatic Retransmission
 			nrf24_write_reg(nrf24_HANDLE, REG_SETUP_RETR, NRF_ESB ? 0x01 : 0); // Automatic Retransmission
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_AA, NRF_AA_OFF || !NRF_ESB ? 0 : 0x3F); // Auto acknowledgement
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_AA, NRF_AA_OFF || !NRF_ESB ? 0 : 0x3F); // Auto acknowledgement
@@ -441,6 +442,9 @@ static void prepare_nrf24(bool fsend_packet)
 			uint8_t addr_size = (*(p + 1) & 0b11) + 2;
 			uint8_t addr_size = (*(p + 1) & 0b11) + 2;
 			nrf24_set_maclen(nrf24_HANDLE, addr_size);
 			nrf24_set_maclen(nrf24_HANDLE, addr_size);
 			nrf24_set_mac(REG_RX_ADDR_P0, p + 2, addr_size);
 			nrf24_set_mac(REG_RX_ADDR_P0, p + 2, addr_size);
+			memcpy(addrs.addr_P0, p + 2, addr_size);
+			addrs.addr_count = 1;
+			addrs.addr_len = addr_size;
 			nrf24_write_reg(nrf24_HANDLE, RX_PW_P0, *(p + 1) >> 3);
 			nrf24_write_reg(nrf24_HANDLE, RX_PW_P0, *(p + 1) >> 3);
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_RXADDR, erx_addr);
 			nrf24_write_reg(nrf24_HANDLE, REG_EN_RXADDR, erx_addr);
 			nrf24_write_reg(nrf24_HANDLE, REG_RF_CH, *p & 0x7F);
 			nrf24_write_reg(nrf24_HANDLE, REG_RF_CH, *p & 0x7F);
@@ -514,6 +518,7 @@ static void start_scanning()
 		correct_NRF_Payload_sniff_min();
 		correct_NRF_Payload_sniff_min();
 		view_log_decode_CRC = NRF_CRC;
 		view_log_decode_CRC = NRF_CRC;
 	} else if(sniff_loaded) { // Switch from sniff to scan/view
 	} else if(sniff_loaded) { // Switch from sniff to scan/view
+		// to do...
 	}
 	}
 	prepare_nrf24(false);
 	prepare_nrf24(false);
 	if(NRF_ERROR) {
 	if(NRF_ERROR) {