@@ -560,6 +560,158 @@ int json_common_ui_data_add(cJSON *parent,
560560 return err ;
561561}
562562
563+ int json_common_neighbor_cells_data_add (cJSON * parent ,
564+ struct cloud_data_neighbor_cells * data ,
565+ enum json_common_op_code op )
566+ {
567+ int err ;
568+
569+ if (!data -> queued ) {
570+ return - ENODATA ;
571+ }
572+
573+ err = date_time_uptime_to_unix_time_ms (& data -> ts );
574+ if (err ) {
575+ LOG_ERR ("date_time_uptime_to_unix_time_ms, error: %d" , err );
576+ return err ;
577+ }
578+
579+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_MCC , data -> cell_data .current_cell .mcc );
580+ if (err ) {
581+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
582+ return err ;
583+ }
584+
585+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_MNC , data -> cell_data .current_cell .mnc );
586+ if (err ) {
587+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
588+ return err ;
589+ }
590+
591+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_CID , data -> cell_data .current_cell .id );
592+ if (err ) {
593+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
594+ return err ;
595+ }
596+
597+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_TAC , data -> cell_data .current_cell .tac );
598+ if (err ) {
599+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
600+ return err ;
601+ }
602+
603+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_EARFCN ,
604+ data -> cell_data .current_cell .earfcn );
605+ if (err ) {
606+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
607+ return err ;
608+ }
609+
610+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_TIMING ,
611+ data -> cell_data .current_cell .timing_advance );
612+ if (err ) {
613+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
614+ return err ;
615+ }
616+
617+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_RSRP ,
618+ data -> cell_data .current_cell .rsrp );
619+ if (err ) {
620+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
621+ return err ;
622+ }
623+
624+ err = json_add_number (parent , DATA_NEIGHBOR_CELLS_RSRQ ,
625+ data -> cell_data .current_cell .rsrq );
626+ if (err ) {
627+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
628+ return err ;
629+ }
630+
631+ err = json_add_number (parent , DATA_TIMESTAMP , data -> ts );
632+ if (err ) {
633+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err , __FILE__ , __LINE__ );
634+ return err ;
635+ }
636+
637+ if (data -> cell_data .ncells_count > 0 ) {
638+ cJSON * neighbor_cells = cJSON_CreateArray ();
639+
640+ if (neighbor_cells == NULL ) {
641+ return err ;
642+ }
643+
644+ for (int i = 0 ; i < data -> cell_data .ncells_count ; i ++ ) {
645+
646+ cJSON * cell = cJSON_CreateObject ();
647+
648+ if (cell == NULL ) {
649+ err = - ENOMEM ;
650+ cJSON_Delete (neighbor_cells );
651+ return err ;
652+ }
653+
654+ err = json_add_number (cell , DATA_NEIGHBOR_CELLS_EARFCN ,
655+ data -> neighbor_cells [i ].earfcn );
656+ if (err ) {
657+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err ,
658+ __FILE__ , __LINE__ );
659+ cJSON_Delete (neighbor_cells );
660+ cJSON_Delete (cell );
661+ return err ;
662+ }
663+
664+ err = json_add_number (cell , DATA_NEIGHBOR_CELLS_PCI ,
665+ data -> neighbor_cells [i ].phys_cell_id );
666+ if (err ) {
667+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err ,
668+ __FILE__ , __LINE__ );
669+ cJSON_Delete (neighbor_cells );
670+ cJSON_Delete (cell );
671+ return err ;
672+ }
673+
674+ err = json_add_number (cell , DATA_NEIGHBOR_CELLS_RSRP ,
675+ data -> neighbor_cells [i ].rsrp );
676+ if (err ) {
677+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err ,
678+ __FILE__ , __LINE__ );
679+ cJSON_Delete (neighbor_cells );
680+ cJSON_Delete (cell );
681+ return err ;
682+ }
683+
684+ err = json_add_number (cell , DATA_NEIGHBOR_CELLS_RSRQ ,
685+ data -> neighbor_cells [i ].rsrq );
686+ if (err ) {
687+ LOG_ERR ("Encoding error: %d returned at %s:%d" , err ,
688+ __FILE__ , __LINE__ );
689+ cJSON_Delete (neighbor_cells );
690+ cJSON_Delete (cell );
691+ return err ;
692+ }
693+
694+ err = op_code_handle (neighbor_cells , JSON_COMMON_ADD_DATA_TO_ARRAY , NULL ,
695+ cell , NULL );
696+ if (err ) {
697+ cJSON_Delete (neighbor_cells );
698+ cJSON_Delete (cell );
699+ return err ;
700+ }
701+ }
702+
703+ err = op_code_handle (parent , JSON_COMMON_ADD_DATA_TO_OBJECT ,
704+ DATA_NEIGHBOR_CELLS_NEIGHBOR_MEAS , neighbor_cells , NULL );
705+ if (err ) {
706+ cJSON_Delete (neighbor_cells );
707+ return err ;
708+ }
709+ }
710+
711+ data -> queued = false;
712+ return err ;
713+ }
714+
563715int json_common_battery_data_add (cJSON * parent ,
564716 struct cloud_data_battery * data ,
565717 enum json_common_op_code op ,
0 commit comments