remove modem logging (#21497)
	
		
	
				
					
				
			
							parent
							
								
									f40e75edf8
								
							
						
					
					
						commit
						a6efe9a6b7
					
				
				 5 changed files with 0 additions and 236 deletions
			
			
		| @ -1,5 +0,0 @@ | ||||
| Import('env', 'common') | ||||
| 
 | ||||
| lenv = env.Clone() | ||||
| lenv["CCFLAGS"] = [f for f in env["CCFLAGS"] if f != "-Wunused"] | ||||
| lenv.Program('rat', ['rat.cc'], LIBS=[common, 'diag', 'time_genoff', 'zmq']) | ||||
| @ -1,33 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| #include <stdbool.h> | ||||
| 
 | ||||
| extern "C" { | ||||
| 
 | ||||
| #define DIAG_MAX_RX_PKT_SIZ 4096 | ||||
| 
 | ||||
| bool Diag_LSM_Init(uint8_t* pIEnv); | ||||
| bool Diag_LSM_DeInit(void); | ||||
| 
 | ||||
| // DCI
 | ||||
| 
 | ||||
| #define DIAG_CON_APSS 0x001 | ||||
| #define DIAG_CON_MPSS 0x002 | ||||
| #define DIAG_CON_LPASS 0x004 | ||||
| #define DIAG_CON_WCNSS 0x008 | ||||
| 
 | ||||
| enum { | ||||
|   DIAG_DCI_NO_ERROR = 1001, | ||||
| } diag_dci_error_type; | ||||
| 
 | ||||
| int diag_register_dci_client(int*, uint16_t*, int, void*); | ||||
| int diag_log_stream_config(int client_id, int set_mask, uint16_t log_codes_array[], int num_codes); | ||||
| int diag_register_dci_stream(void (*func_ptr_logs)(unsigned char *ptr, int len), void (*func_ptr_events)(unsigned char *ptr, int len)); | ||||
| int diag_release_dci_client(int*); | ||||
| 
 | ||||
| int diag_send_dci_async_req(int client_id, unsigned char buf[], int bytes, unsigned char *rsp_ptr, int rsp_len, | ||||
|                             void (*func_ptr)(unsigned char *ptr, int len, void *data_ptr), void *data_ptr); | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -1,183 +0,0 @@ | ||||
| #include <semaphore.h> | ||||
| #include <cassert> | ||||
| #include <cstdio> | ||||
| #include <cstdlib> | ||||
| #include <map> | ||||
| 
 | ||||
| #include "json11.hpp" | ||||
| 
 | ||||
| #include "libdiag.h" | ||||
| #include "selfdrive/common/swaglog.h" | ||||
| 
 | ||||
| 
 | ||||
| #define DIAG_NV_READ_F 38 | ||||
| #define DIAG_NV_WRITE_F 39 | ||||
| 
 | ||||
| #define DIAG_SUBSYS_CMD 75 | ||||
| #define DIAG_SUBSYS_CMD_VER_2 128 | ||||
| 
 | ||||
| #define DIAG_SUBSYS_FS 19 | ||||
| 
 | ||||
| #define EFS2_DIAG_SYNC_NO_WAIT 48 | ||||
| 
 | ||||
| 
 | ||||
| struct __attribute__((packed)) NvPacket { | ||||
|   uint8_t cmd_code; | ||||
|   uint16_t nv_id; | ||||
|   uint8_t data[128]; | ||||
|   uint16_t status; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| enum NvStatus { | ||||
|   NV_DONE, | ||||
|   NV_BUSY, | ||||
|   NV_FULL, | ||||
|   NV_FAIL, | ||||
|   NV_NOTACTIVE, | ||||
|   NV_BADPARAM, | ||||
|   NV_READONLY, | ||||
|   NV_BADRG, | ||||
|   NV_NOMEM, | ||||
|   NV_NOTALLOC, | ||||
| }; | ||||
| 
 | ||||
| struct __attribute__((packed)) Efs2DiagSyncReq { | ||||
|   uint8_t cmd_code; | ||||
|   uint8_t subsys_id; | ||||
|   uint16_t subsys_cmd_code; | ||||
|   uint16_t sequence_num; | ||||
|   char path[8]; | ||||
| }; | ||||
| 
 | ||||
| struct __attribute__((packed)) Efs2DiagSyncResp { | ||||
|   uint8_t cmd_code; | ||||
|   uint8_t subsys_id; | ||||
|   uint16_t subsys_cmd_code; | ||||
|   uint16_t sequence_num; | ||||
|   uint32_t sync_token; | ||||
|   int32_t diag_errno; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| struct SendDiagSyncState { | ||||
|   sem_t sem; | ||||
|   int len; | ||||
| }; | ||||
| 
 | ||||
| static void diag_send_sync_cb(unsigned char *ptr, int len, void *data_ptr) { | ||||
|   SendDiagSyncState *s = (SendDiagSyncState*)data_ptr; | ||||
|   s->len = len; | ||||
|   sem_post(&s->sem); | ||||
| } | ||||
| 
 | ||||
| static int diag_send_sync(int client_id, unsigned char* req_pkt, size_t pkt_len, | ||||
|                            unsigned char* res_pkt, size_t res_pkt_size) { | ||||
| 
 | ||||
|   SendDiagSyncState s = {0}; | ||||
|   sem_init(&s.sem, 0, 0); | ||||
| 
 | ||||
|   int err = diag_send_dci_async_req(client_id, req_pkt, pkt_len, res_pkt, res_pkt_size, | ||||
|                                     diag_send_sync_cb, &s); | ||||
|   assert(err == DIAG_DCI_NO_ERROR); | ||||
| 
 | ||||
|   sem_wait(&s.sem); | ||||
|   return s.len; | ||||
| } | ||||
| 
 | ||||
| static void efs_sync(int client_id) { | ||||
|   unsigned char res_pkt[DIAG_MAX_RX_PKT_SIZ]; | ||||
| 
 | ||||
|   Efs2DiagSyncReq req_pkt = { | ||||
|     .cmd_code = DIAG_SUBSYS_CMD, | ||||
|     .subsys_id = DIAG_SUBSYS_FS, | ||||
|     .subsys_cmd_code = EFS2_DIAG_SYNC_NO_WAIT, | ||||
|     .sequence_num = (uint16_t)(rand() % 100), | ||||
|   }; | ||||
|   req_pkt.path[0] = '/'; | ||||
|   req_pkt.path[1] = 0; | ||||
| 
 | ||||
|   int res_len = diag_send_sync(client_id, (unsigned char*)&req_pkt, sizeof(req_pkt), | ||||
|                                 res_pkt, sizeof(res_pkt)); | ||||
|   Efs2DiagSyncResp *resp = (Efs2DiagSyncResp*)res_pkt; | ||||
| 
 | ||||
|   if (res_len != sizeof(Efs2DiagSyncResp) | ||||
|       || resp->cmd_code != DIAG_SUBSYS_CMD | ||||
|       || resp->subsys_id != DIAG_SUBSYS_FS | ||||
|       || resp->subsys_cmd_code != EFS2_DIAG_SYNC_NO_WAIT) { | ||||
|     LOGW("efs_sync: bad response!"); | ||||
|     return; | ||||
|   } | ||||
|   if (resp->diag_errno != 0) { | ||||
|     LOGW("efs_sync: error %d", resp->diag_errno); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| static int nv_read(int client_id, uint16_t nv_id, NvPacket &resp) { | ||||
|   NvPacket req = { | ||||
|     .cmd_code = DIAG_NV_READ_F, | ||||
|     .nv_id = nv_id, | ||||
|   }; | ||||
| 
 | ||||
|   int res_len = diag_send_sync(client_id, (unsigned char*)&req, sizeof(req), | ||||
|                                (unsigned char*)&resp, sizeof(resp)); | ||||
| 
 | ||||
|   // hexdump((uint8_t*)&resp, res_len);
 | ||||
| 
 | ||||
|   if (resp.cmd_code != DIAG_NV_READ_F || resp.nv_id != nv_id) { | ||||
|     LOGW("nv_read: diag command failed"); | ||||
|     return -1; | ||||
|   } | ||||
| 
 | ||||
|   if (resp.status != NV_DONE) { | ||||
|     LOGW("nv_read: read failed: %d", resp.status); | ||||
|     return -1; | ||||
|   } | ||||
|   return 0; | ||||
| } | ||||
| 
 | ||||
| static uint32_t nv_read_u32(int client_id, uint16_t nv_id) { | ||||
|   NvPacket resp = {0}; | ||||
|   if (nv_read(client_id, nv_id, resp) < 0) { | ||||
|     return 0; | ||||
|   } | ||||
|   return *(uint32_t*)resp.data; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| int main() { | ||||
|   int err; | ||||
|   int client_id = 0; | ||||
| 
 | ||||
|   // setup diag
 | ||||
|   bool ok = Diag_LSM_Init(NULL); | ||||
|   assert(ok); | ||||
| 
 | ||||
|   uint16_t list = DIAG_CON_APSS | DIAG_CON_MPSS; | ||||
|   int signal_type = SIGCONT; | ||||
|   err = diag_register_dci_client(&client_id, &list, 0, &signal_type); | ||||
|   assert(err == DIAG_DCI_NO_ERROR); | ||||
| 
 | ||||
|   // log some stuff
 | ||||
|   std::map<std::string, uint16_t> to_log = { | ||||
|     {"B13", 6502}, | ||||
|     {"B7", 6553}, | ||||
|     {"B17", 6606}, | ||||
|     {"B40", 6658}, | ||||
|     {"B1", 6710}, | ||||
|   }; | ||||
|   auto log = json11::Json::object {}; | ||||
|   for (auto const &kv : to_log) { | ||||
|     NvPacket resp = {0}; | ||||
|     nv_read(client_id, kv.second, resp); | ||||
|     log[kv.first] = *(uint8_t*)resp.data; | ||||
|   } | ||||
| 
 | ||||
|   printf("%s\n", json11::Json(log).dump().c_str()); | ||||
| 
 | ||||
|   // cleanup
 | ||||
|   err = diag_release_dci_client(&client_id); | ||||
|   assert(err == DIAG_DCI_NO_ERROR); | ||||
|   Diag_LSM_DeInit(); | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue