//2018.05.10 /******************************************************************************* * ���W���[������ �F�A�v���P�[�V����05 - Background Task - MEA * * ���W���[�����x�� �Fapp05_MEA * * �^�X�N�敪 �F�A�v���P�[�V�����^�X�N * * �@�\ �F * * �R�[�����O�V�[�P���X�Fvoid app05_MEA * * �߂�l �Fvoid * * �g�p��̒��� �F�Ȃ� * * �G���[���� �F�Ȃ� * * ���� �FEDIT�����́AMPPE�g * * �쐬���E�쐬�� �F2018/05/18 Y.K. * ********************************************************************************/ #include "app_common.h" #include "app_MPPE-MIA.h" #include "app_MPPE-MEA.h" int app05_MEA_TlmDump( unsigned char, unsigned char, unsigned char, unsigned int, unsigned int, unsigned char); char app05_MEA_makeH(unsigned char, unsigned short*, unsigned short*); int app05_MEA1 ( unsigned int ui_TIstart, // [INPUT] TI - Dump Start (0x00000000:OLDEST 0xFFFFFFFF:LATEST) unsigned int ui_TIlen, // [INPUT] TI - Dump Length (0x0000: 1 Packet 0x0001: 1 Block 0xFFFF: All) unsigned char uc_drID ) // [INPUT] DR-ID (0:CAL etc 1-5:Sync Trigger) { int i_flag; unsigned char uc_nodeId = Gd_N_MEA1; // Node-ID: MEA1 unsigned char uc_dataId = 0; // Data-ID: MEA1 unsigned char uc_headId = Gd_N_MEA1; // Head-ID: MEA1 i_flag = app05_MEA_TlmDump( uc_nodeId, // [INPUT] Node-ID uc_dataId, // [INPUT] Data-ID uc_headId, // [INPUT] Head-ID ui_TIstart, // [INPUT] TI - Dump Start (0x00000000:OLDEST 0xFFFFFFFF:LATEST) ui_TIlen, // [INPUT] TI - Dump Length (0x0000: 1 Packet 0x0001: 1 Block 0xFFFF: All) uc_drID); // [INPUT] DR ID (0:CAL etc 1-5:Sync Trigger) return i_flag; //1: Ok; 0: No data } int app05_MEA2 ( unsigned int ui_TIstart, // [INPUT] TI - Dump Start (0x00000000:OLDEST 0xFFFFFFFF:LATEST) unsigned int ui_TIlen, // [INPUT] TI - Dump Length (0x0000: 1 Packet 0x0001: 1 Block 0xFFFF: All) unsigned char uc_drID ) // [INPUT] DR-ID (0:CAL etc 1-5:Sync Trigger) { int i_flag; unsigned char uc_nodeId = Gd_N_MEA2; // Node-ID: MEA2 unsigned char uc_dataId = 0; // Data-ID: MEA2 unsigned char uc_headId = Gd_N_MEA2; // Head-ID: MEA2 i_flag = app05_MEA_TlmDump( uc_nodeId, // [INPUT] Node-ID uc_dataId, // [INPUT] Data-ID uc_headId, // [INPUT] Head-ID ui_TIstart, // [INPUT] TI - Dump Start (0x00000000:OLDEST 0xFFFFFFFF:LATEST) ui_TIlen, // [INPUT] TI - Dump Length (0x0000: 1 Packet 0x0001: 1 Block 0xFFFF: All) uc_drID); // [INPUT] DR ID (0:CAL etc 1-5:Sync Trigger) return i_flag; //1: Ok; 0: No data } int app05_MEA_TlmDump( unsigned char uc_nodeId, // [INPUT] Node-ID unsigned char uc_dataId, // [INPUT] Data-ID unsigned char uc_headId, // [INPUT] Head-ID unsigned int ui_TIstart, // [INPUT] TI - Dump Start (0x00000000:OLDEST 0xFFFFFFFF:LATEST) unsigned int ui_TIlen, // [INPUT] TI - Dump Length (0x0000: 1 Packet 0x0001: 1 Block 0xFFFF: All) unsigned char uc_drID) // [INPUT] DR ID 0:CAL etc 1-5:Sync Trigger { // === BLOCK read === int i_numNewBlock; // Num of blocks with new data M_T_BLOCK_INFO t_blockInfo; // unsigned int ui_createTime Block �����J�n���q������(1LSB=31,25ms) // int i_replyNum Block �o�^Read-Reply�� // char c_invalidFlg Block ���f�[�^�ُ� [0:�ُ�Ȃ� 1:�ُ킠��] // unsigned int ui_blockIndex LongBuffer/ShortBuffer ��Block����ԍ� (�擪Block:0) //int i_sizeBlk, i_sizePac, i_numPac; int i, j, n; int i_flag, i_rmap_hdr; unsigned int ui_TIend; unsigned int ui_TI; //unsigned char uc_mode; //Mode�ԍ� //unsigned char uc_64nm; //64Mode�ԍ� unsigned char uc_pckt; //�p�P�b�g�ԍ� unsigned char uc_en_mode; //�G�l���M�[���[�h: 2(32en x 16sc), 4(64en x 16sc)�݂̂ɑΉ� unsigned char uc_find_pac1; //�p�P�b�g�ԍ�1�̌��o�t���O int i_ProNum; struct _s_MEA_CtrlParam *pCtrl; //����p�̃t���O�y�уp�����[�^ MEA1or2 if (uc_nodeId == Gd_N_MEA1) pCtrl = &Gst_MEA1_ctrl; else pCtrl = &Gst_MEA2_ctrl; uc_find_pac1 = FALSE; i_rmap_hdr = 12; //RMAP�w�b�_:12B // ------------------------------------------------- // -- Set at the LONG buffer with the aimed block -- // ------------------------------------------------- i_numNewBlock = app_SetTlmHBlock( uc_nodeId, uc_dataId, // [INPUT] Node/Data ID ui_TIstart, // [INPUT] TI of Start Block [0x0000000: OLDEST 0xFFFFFFFF: NEWEST] &t_blockInfo); // [OUTPUT] Block Info *** // (return) >0:Num of blocks, <=0:No data (error) *** if ( i_numNewBlock < 1 ) return(0); // No data // TI-END if ( ui_TIlen == 0 || ui_TIlen == 1 ) ui_TIend = t_blockInfo.ui_createTime + 1; // 1 Packet or 1 Block else { if ( ui_TIstart == 0x00000000 || ui_TIstart == 0xFFFFFFFF ) ui_TIend = t_blockInfo.ui_createTime + ui_TIlen; // from OLDEST or LATEST else ui_TIend = ui_TIstart + ui_TIlen; // from OLDEST or LATEST } // TI-LEN special if ( ui_TIlen == 0 || ui_TIlen == 1 ) i_numNewBlock = 1; //if ( ui_TIlen == 0 ) i_numPac = 1; for (i=0; i<i_numNewBlock; i++) { if ( Guc_TLMh_enadis[ uc_nodeId ]==0 ) break; // **** 121125: added by YK **** if ( t_blockInfo.ui_createTime < ui_TIend && // Time-Width check (LSB: 31.25msec) t_blockInfo.i_replyNum > 0 && // Data available t_blockInfo.c_invalidFlg == 0 ) { // Data correct for (j = 0; j < 18; j++) { //��Ƀw�b�_�̂ݓǂݍ��݁A�_�~�[�p�P�b�g�̏ꍇ�̓X�L�b�v i_flag = app_GetPacket( 5, // [INPUT] App-No:5 uc_nodeId, uc_dataId, // [INPUT] Node/Data ID 0, // [INPUT] Buffer ID = 0 (LONG) &t_blockInfo, // [INPUT] Block Info j, // [INPUT] Packet Num = 0(�擪) 0, // [INPUT] Offset(�W�̔{��) = 0(�擪) 32, // [INPUT] �Ǐo�T�C�Y = 1000B or Packet�T�C�Y G5uc_packet ); // [OUTPUT] 1 Block Data - copied if ( i_flag ) continue; uc_pckt = G5uc_packet[i_rmap_hdr + 5]; if (uc_pckt == 0xff || uc_pckt == 0) continue; uc_pckt &= 0x3f; //�p�P�b�g�ԍ� // 1-16 M2 // 1-32 M4 //if (uc_pckt > 0x10) continue; uc_en_mode = G5uc_packet[i_rmap_hdr + 4]; //M0-4 (2) i_flag = app_GetPacket( 5, // [INPUT] App-No:5 uc_nodeId, uc_dataId, // [INPUT] Node/Data ID 0, // [INPUT] Buffer ID = 0 (LONG) &t_blockInfo, // [INPUT] Block Info j, // [INPUT] Packet Num = 0(�擪) 0, // [INPUT] Offset(�W�̔{��) = 0(�擪) d_Lcl_MEA_PACSZ, // [INPUT] �Ǐo�T�C�Y = 1000B or Packet�T�C�Y G5uc_data + (uc_pckt-1)*d_Lcl_MEA_PACSZ); // [OUTPUT] 1 Block Data - copied if ( i_flag ) continue; //���o�� if (uc_pckt == 1) { memcpy( Gst_MEA_dat.uc_hdrH, G5uc_packet + i_rmap_hdr, 8); //SWEEP#1�̃w�b�_���擾���� memcpy(&ui_TI, G5uc_packet + i_rmap_hdr, 4); //TI uc_find_pac1 = TRUE; //�p�P�b�g#1���o�t���O } //���o���Ȍ� //ScienceData��uc_data�ɍĔz�u���� if (uc_find_pac1 && uc_pckt >= 1 && uc_pckt <= 32) { //H0 if (uc_drID == 0) { app03_MIA_tlmout(uc_nodeId, //MEA1 OR MEA2 �t���O pCtrl->uc_vet_cmp_ena, //[INPUT] ���k�t���O (8 + 1024)/2, //[INPUT] data���� 0xfe, //[INPUT] Comment2 4, //[INPUT] Comment3 (unsigned short*) (G5uc_data + (uc_pckt-1)*d_Lcl_MEA_PACSZ + i_rmap_hdr), //[INPUT] ���k�O�̃v���_�N�g Gst_MEA_dat.us_3D_H, //[MID] ���k��o�b�t�@ ui_TI, //[INPUT] TI 4+uc_drID); //[INPUT] 0:L, 1: M, 4-9:H(DR-ID) } //H1-5 //else { // memcpy(&G5uc_data[(uc_pckt-1)*d_Lcl_MEA_SCISZ], // &G5uc_packet[i_rmap_hdr + 8], d_Lcl_MEA_SCISZ); //} } //���K�o�� //M2 H1-5�̂� if (uc_find_pac1 && uc_pckt == 16 && uc_drID != 0 && uc_en_mode == 2) { //memcpy(&ui_TI, G5uc_packet + i_rmap_hdr, 4); //SWEEP#1��TI�̂܂� //2018.05.10���� memcpy( Gst_MEA_dat.uc_hdrH, G5uc_packet + i_rmap_hdr, 8); //SWEEP#16�̃w�b�_�ŏ㏑�� //2018.05.10���� uc_find_pac1 = FALSE; //�p�P�b�g#1���o�t���O��߂� //SW CAL if (pCtrl->uc_swcal_prm[0]) { //SW cal ON��: �e�X�g�p�p���X�ŃJ�E���g�f�[�^���㏑������ app03_MEA_makeSWcal(uc_nodeId, //[INPUT] SensorID (unsigned short*)G5uc_data, //[OUTPUT] Buffer for Count data uc_en_mode); //[INPUT] ���[�h�ԍ� } //�v���_�N�g�쐬��TLM�쐬 //H mode product�쐬 1(4s) or 2(2s) i_ProNum = (uc_nodeId == Gd_N_MEA1) ? 1 + d_Lcl_MEA1_2sM : 1 + d_Lcl_MEA2_2sM; for (n = 0; n < i_ProNum; ++n) { app05_MEA_makeH(n + 2, //[INPUT]Mode Flag (2 or 3) (unsigned short*)G5uc_data, //[INPUT]Count data Gst_MEA_dat.us_3D_H); //[OUTPUT]Product app03_MIA_tlmout(uc_nodeId, //MEA1 OR MEA2 �t���O pCtrl->uc_vet_cmp_ena, //[INPUT] ���k�t���O 32*88 + d_Lcl_MEA_HK2B, //[INPUT] data���� 0xfe, //[INPUT] Comment2 n, //[INPUT] Comment3 Gst_MEA_dat.us_3D_H, //[INPUT] ���k�O�̃v���_�N�g (unsigned short*)(G5uc_data +d_Lcl_MEA_PACSZ*16), //[MID] ���k��o�b�t�@ ui_TI, //[INPUT] TI 4+uc_drID); } } } Gui_TLMh_blockTime[uc_nodeId] = t_blockInfo.ui_createTime; } // To next block i_flag = app_NextBlock( uc_nodeId, uc_dataId, // [INPUT] Node/Data ID 0, // [INPUT] Buffer ID: 0 = LONG &t_blockInfo); // [OUTPUT] Block Info if ( i_flag ) break; // no data } return 1; } char app05_MEA_makeH(unsigned char uc_f, // [INPUT]FLG 3D-H 2: H 0-7ch // 3: H 8-15ch unsigned short us_pac[], // [INPUT] COUNT data unsigned short us_out[]) // [OUTPUT] Product { struct _s_MEA_Product *pDat; //�v���_�N�g pDat = &Gst_MEA_dat; //pDat->us_Hlen = 32*88 + d_Lcl_MEA_HK2B; //�f�[�^�� memcpy(us_out, pDat->uc_hdrH, d_Lcl_MEA_HK2B*2); //SWEEP#1�̃w�b�_���擾���� //Hmode�͑���݂̂Ȃ̂ŏ������͕s�v app03_MEA_3D(us_pac, us_out + d_Lcl_MEA_HK2B, uc_f); //�v���_�N�g�쐬 #ifdef _RUN_ON_WINDOWS_ int i, j; printf("3D-H(2,4s)\n"); for (j = 0; j < 88; ++j) { for (i = 0; i < 32; ++i) printf("%0004x ", *(us_out + d_Lcl_MEA_HK2B + i + j*32) ); printf("\n"); } #endif return TRUE; }