@@ -453,6 +453,78 @@ static void md_input_netlink_radio_gsm_rr_channel_conf(struct md_input_netlink *
453453 free (event );
454454}
455455
456+ static void md_input_netlink_radio_wcdma_rrc_state (struct md_input_netlink * min ,
457+ struct json_object * obj )
458+ {
459+ struct md_radio_wcdma_rrc_state_event * event = calloc (sizeof (struct md_radio_wcdma_rrc_state_event ), 1 );
460+
461+ if (!event )
462+ return ;
463+
464+ json_object_object_foreach (obj , key , val ) {
465+ if (!strcmp (key , "md_seq" ))
466+ event -> sequence = (uint16_t ) json_object_get_int (val );
467+ else if (!strcmp (key , "timestamp" ))
468+ event -> tstamp = json_object_get_int64 (val );
469+ else if (!strcmp (key , "event_param" ))
470+ event -> event_param = (uint8_t ) json_object_get_int (val );
471+ else if (!strcmp (key , "event_type" ))
472+ event -> md_type = (uint8_t ) json_object_get_int (val );
473+ else if (!strcmp (key , "iccid" ))
474+ event -> iccid = json_object_get_string (val );
475+ else if (!strcmp (key , "imsi" ))
476+ event -> imsi = json_object_get_string (val );
477+ else if (!strcmp (key , "imei" ))
478+ event -> imei = json_object_get_string (val );
479+ else if (!strcmp (key , "rrc_state" ))
480+ event -> rrc_state = (uint8_t ) json_object_get_int (val );
481+ }
482+
483+ mde_publish_event_obj (min -> parent , (struct md_event * ) event );
484+ free (event );
485+ }
486+
487+ static void md_input_netlink_radio_wcdma_cell_id (struct md_input_netlink * min ,
488+ struct json_object * obj )
489+ {
490+ struct md_radio_wcdma_cell_id_event * event = calloc (sizeof (struct md_radio_wcdma_cell_id_event ), 1 );
491+
492+ if (!event )
493+ return ;
494+
495+ json_object_object_foreach (obj , key , val ) {
496+ if (!strcmp (key , "md_seq" ))
497+ event -> sequence = (uint16_t ) json_object_get_int (val );
498+ else if (!strcmp (key , "timestamp" ))
499+ event -> tstamp = json_object_get_int64 (val );
500+ else if (!strcmp (key , "event_param" ))
501+ event -> event_param = (uint8_t ) json_object_get_int (val );
502+ else if (!strcmp (key , "event_type" ))
503+ event -> md_type = (uint8_t ) json_object_get_int (val );
504+ else if (!strcmp (key , "iccid" ))
505+ event -> iccid = json_object_get_string (val );
506+ else if (!strcmp (key , "imsi" ))
507+ event -> imsi = json_object_get_string (val );
508+ else if (!strcmp (key , "imei" ))
509+ event -> imei = json_object_get_string (val );
510+ else if (!strcmp (key , "ul_uarfcn" ))
511+ event -> ul_uarfcn = (uint32_t ) json_object_get_int (val );
512+ else if (!strcmp (key , "dl_uarfcn" ))
513+ event -> dl_uarfcn = (uint32_t ) json_object_get_int (val );
514+ else if (!strcmp (key , "cell_id" ))
515+ event -> cell_id = (uint32_t ) json_object_get_int (val );
516+ else if (!strcmp (key , "ura_id" ))
517+ event -> ura_id = (uint16_t ) json_object_get_int (val );
518+ else if (!strcmp (key , "cell_access_rest" ))
519+ event -> cell_access_rest = (uint8_t ) json_object_get_int (val );
520+ else if (!strcmp (key , "call_accs" ))
521+ event -> dl_uarfcn = (uint8_t ) json_object_get_int (val );
522+ }
523+
524+ mde_publish_event_obj (min -> parent , (struct md_event * ) event );
525+ free (event );
526+ }
527+
456528static void md_input_netlink_handle_radio_event (struct md_input_netlink * min ,
457529 struct json_object * obj )
458530{
@@ -464,6 +536,8 @@ static void md_input_netlink_handle_radio_event(struct md_input_netlink *min,
464536 return ;
465537 }
466538
539+ memset (min -> mre , 0 , sizeof (struct md_radio_event ));
540+ min -> mre -> md_type = META_TYPE_RADIO ;
467541 event_param = (uint8_t ) json_object_get_int (event_param_json );
468542
469543 switch (event_param ) {
@@ -487,6 +561,15 @@ static void md_input_netlink_handle_radio_event(struct md_input_netlink *min,
487561 META_PRINT_SYSLOG (min -> parent , LOG_ERR , "GRR_CELL_RESEL\n" );
488562 md_input_netlink_radio_grr_cell_resel (min , obj );
489563 break ;
564+ case RADIO_EVENT_WCDMA_RRC_STATE :
565+ META_PRINT_SYSLOG (min -> parent , LOG_ERR , "WCDMA_RRC_STATE\n" );
566+ md_input_netlink_radio_wcdma_rrc_state (min , obj );
567+ break ;
568+ case RADIO_EVENT_WCDMA_CELL_ID :
569+ META_PRINT_SYSLOG (min -> parent , LOG_ERR , "WCDMA_CELL_ID\n" );
570+ md_input_netlink_radio_wcdma_cell_id (min , obj );
571+ break ;
572+
490573 default :
491574 break ;
492575 }
@@ -543,7 +626,7 @@ static void md_input_netlink_handle_gps_event(struct md_input_netlink *min,
543626
544627 if (sentence_id <= 0 )
545628 return ;
546-
629+
547630 gps_event .minmea_id = sentence_id ;
548631
549632 //We can ignore NMEA checksum
0 commit comments