@@ -405,11 +405,13 @@ int sx126x_init(sx126x_t *dev)
405405 sx126x_cfg_tx_clamp (dev );
406406 }
407407
408- /* Configure the power regulator mode */
409- sx126x_set_reg_mode (dev , dev -> params -> regulator );
410-
411- /* Initialize radio with the default parameters */
412- sx126x_init_default_config (dev );
408+ /* check for errors */
409+ sx126x_errors_mask_t error = 0 ;
410+ sx126x_get_device_errors (dev , & error );
411+ if (error ) {
412+ SX126X_LOG_ERROR (dev , "startup: device errors 0x%04x\n" , error );
413+ }
414+ sx126x_clear_device_errors (dev );
413415
414416#if IS_USED (MODULE_SX126X_DIO2 )
415417 if (dev -> params -> dio2_mode == SX126X_DIO2_RF_SWITCH ) {
@@ -445,6 +447,16 @@ int sx126x_init(sx126x_t *dev)
445447 sx126x_cal (dev , SX126X_CAL_ALL );
446448 }
447449#endif
450+ error = 0 ;
451+ sx126x_get_device_errors (dev , & error );
452+ if (error ) {
453+ SX126X_LOG_ERROR (dev , "error: device error 0x%04x\n" , error );
454+ }
455+ else {
456+ SX126X_LOG_INFO (dev , "startup successful\n" );
457+ }
458+ sx126x_clear_device_errors (dev );
459+
448460 /* The user can specify the use of DC-DC by using the command SetRegulatorMode(...).
449461 This operation must be carried out in STDBY_RC mode only.*/
450462 sx126x_set_reg_mode (dev , dev -> params -> regulator );
@@ -482,6 +494,14 @@ sx126x_chip_modes_t sx126x_get_state(const sx126x_t *dev)
482494
483495void sx126x_set_state (sx126x_t * dev , sx126x_chip_modes_t state )
484496{
497+ /* check for errors */
498+ sx126x_errors_mask_t error = 0 ;
499+ sx126x_get_device_errors (dev , & error );
500+ if (error ) {
501+ SX126X_DEBUG (dev , "before set state: device error 0x%04x before setting state\n" , error );
502+ }
503+ sx126x_clear_device_errors (dev );
504+
485505 switch (state ) {
486506 case SX126X_CHIP_MODE_TX :
487507 sx126x_set_tx (dev , 0 ); /* no TX frame timeout */
@@ -514,6 +534,13 @@ void sx126x_set_state(sx126x_t *dev, sx126x_chip_modes_t state)
514534 default :
515535 break ;
516536 }
537+
538+ error = 0 ;
539+ sx126x_get_device_errors (dev , & error );
540+ if (error ) {
541+ SX126X_DEBUG (dev , "after set state: device error 0x%04x before setting state\n" , error );
542+ }
543+ sx126x_clear_device_errors (dev );
517544}
518545
519546uint32_t sx126x_get_channel (const sx126x_t * dev )
@@ -558,10 +585,17 @@ static void _cal_img(sx126x_t *dev, uint32_t freq)
558585
559586void sx126x_set_channel (sx126x_t * dev , uint32_t freq )
560587{
588+ sx126x_clear_device_errors (dev );
561589 SX126X_DEBUG (dev , "sx126x_set_channel %" PRIu32 "Hz \n" , freq );
562590 dev -> channel = freq ;
563591 sx126x_set_rf_freq (dev , dev -> channel );
564592 _cal_img (dev , freq );
593+ sx126x_errors_mask_t error = 0 ;
594+ sx126x_get_device_errors (dev , & error );
595+ if (error ) {
596+ SX126X_DEBUG (dev , "sx126x_set_channel: device errors 0x%04x\n" , error );
597+ }
598+ sx126x_clear_device_errors (dev );
565599}
566600
567601uint8_t sx126x_get_bandwidth (const sx126x_t * dev )
0 commit comments