kopia lustrzana https://github.com/DL7AD/pecanpico10
				
				
				
			Quick fix for 446x.c temperature reading. Refactoring opportunity.
							rodzic
							
								
									99cd619f35
								
							
						
					
					
						commit
						7937fad841
					
				| 
						 | 
				
			
			@ -124,7 +124,7 @@ const conf_t conf_flash_default = {
 | 
			
		|||
	},
 | 
			
		||||
	.rx = {
 | 
			
		||||
		.thread_conf = {
 | 
			
		||||
			.active			= true
 | 
			
		||||
			.active			= false
 | 
			
		||||
		},
 | 
			
		||||
		.radio_conf = {
 | 
			
		||||
			.pwr			= 0x7F,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1453,20 +1453,23 @@ void Si446x_send2FSK(packet_t pp,
 | 
			
		|||
/* ========================================================================== Misc ========================================================================== */
 | 
			
		||||
 | 
			
		||||
static int16_t Si446x_getTemperature(void) {
 | 
			
		||||
    const uint8_t txData[2] = {0x14, 0x10};
 | 
			
		||||
    uint8_t rxData[8];
 | 
			
		||||
    Si446x_read(txData, 2, rxData, 8);
 | 
			
		||||
    uint16_t adc = rxData[7] | ((rxData[6] & 0x7) << 8);
 | 
			
		||||
    return (89900*adc)/4096 - 29300;
 | 
			
		||||
  Si446x_lockRadio();
 | 
			
		||||
  const uint8_t txData[2] = {0x14, 0x10};
 | 
			
		||||
  uint8_t rxData[8];
 | 
			
		||||
  Si446x_read(txData, 2, rxData, 8);
 | 
			
		||||
  uint16_t adc = rxData[7] | ((rxData[6] & 0x7) << 8);
 | 
			
		||||
  Si446x_unlockRadio();
 | 
			
		||||
  return (89900*adc)/4096 - 29300;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int16_t Si446x_getLastTemperature(void) {
 | 
			
		||||
    if(lastTemp == 0x7FFF) { // Temperature was never measured => measure it now
 | 
			
		||||
        Si446x_init();
 | 
			
		||||
        Si446x_shutdown();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return lastTemp;
 | 
			
		||||
  if(lastTemp == 0x7FFF) { // Temperature was never measured => measure it now
 | 
			
		||||
    Si446x_lockRadio();
 | 
			
		||||
    Si446x_init();
 | 
			
		||||
    Si446x_shutdown();
 | 
			
		||||
    Si446x_unlockRadio();
 | 
			
		||||
  }
 | 
			
		||||
  return lastTemp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,7 @@ bool pktServiceRelease() {
 | 
			
		|||
 * @param[in] encoding  radio link level encoding.
 | 
			
		||||
 * @param[in] frequency operating frequency (in Hz).
 | 
			
		||||
 * @param[in] ch_step   frequency step per channel (in Hz).
 | 
			
		||||
 * @param[in] ph        variable to receive the reference to the packet handler.
 | 
			
		||||
 *
 | 
			
		||||
 * @return              the reference to the packet handler object.
 | 
			
		||||
 * @retval MSG_OK       if the open request was processed.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,8 +95,9 @@ bool transmitOnRadio(packet_t pp, uint32_t freq, uint16_t step, uint8_t chan,
 | 
			
		|||
		extern packet_svc_t RPKTD1;
 | 
			
		||||
		packet_svc_t *handler = &RPKTD1;
 | 
			
		||||
 | 
			
		||||
		if(!(handler->state == PACKET_OPEN || handler->state == PACKET_RUN)) {
 | 
			
		||||
		if(handler->state == PACKET_IDLE || handler->state == PACKET_CLOSE) {
 | 
			
		||||
          TRACE_ERROR("RAD  > Packet services are not open for transmit");
 | 
			
		||||
          ax25_delete(pp);
 | 
			
		||||
		  return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -115,12 +116,13 @@ bool transmitOnRadio(packet_t pp, uint32_t freq, uint16_t step, uint8_t chan,
 | 
			
		|||
		rt.callback = NULL;
 | 
			
		||||
 | 
			
		||||
		/* Save the current data. */
 | 
			
		||||
		handler->radio_tx_config = rt;
 | 
			
		||||
		//handler->radio_tx_config = rt;
 | 
			
		||||
 | 
			
		||||
        msg_t msg = pktSendRadioCommand(rt.handler, &rt);
 | 
			
		||||
        if(msg != MSG_OK)
 | 
			
		||||
        msg_t msg = pktSendRadioCommand(handler, &rt);
 | 
			
		||||
        if(msg != MSG_OK) {
 | 
			
		||||
          ax25_delete(pp);
 | 
			
		||||
          return false;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
/*		switch(mod)
 | 
			
		||||
		{
 | 
			
		||||
			case MOD_2FSK:
 | 
			
		||||
| 
						 | 
				
			
			@ -136,6 +138,7 @@ bool transmitOnRadio(packet_t pp, uint32_t freq, uint16_t step, uint8_t chan,
 | 
			
		|||
		TRACE_ERROR("RAD  > It is nonsense to transmit 0 bits, %d.%03d MHz, Pwr dBm, %s, %d byte",
 | 
			
		||||
					freq/1000000, (freq%1000000)/1000, pwr,
 | 
			
		||||
					getModulation(mod), len);
 | 
			
		||||
	    ax25_delete(pp);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue