/*******************************************************************************
*   ���W���[������      �FAPI�֐��v���g�^�C�v�錾                              *
*   ���W���[�����x��    �Fdpu_api_proto.h                                      *
*   �^�X�N�敪          �F�w�b�_                                               *
*   �@�\                �FAPI�֐��v���g�^�C�v�錾���s��                        *
*   �g�p��̒���        �F���ɂȂ�                                             *
*   �������E������      �F2011/02/09    �}�H  User������Comment����            *
*******************************************************************************/
#ifndef _DPU_API_PROTO_H_
#define _DPU_API_PROTO_H_

// ***************************
// *** API�֐��v���g�^�C�v ***
// ***************************
// <<< CMD >>>
int dpu_getCommand                          (unsigned char uc_commandBuff[266],    int *ip_dataSize);														// 3.1.1**
int dpu_sendMissionCmd      (int i_nodeID,   unsigned char uc_commandBuff[163],    int   i_dataSize);														// 3.1.2**
int dpu_sendMissionCmdAtOnce(int i_nodeID[], unsigned char uc_commandBuff[8][163], int   i_dataSize[8]);													// 3.1.3**

// <<< HK >>>
int dpu_getHK               (int i_nodeID,   unsigned char uc_hkBuff[128]);																					// 3.1.4**
int dpu_getMwHK             (                unsigned char uc_hkBuff[1280]);																				// 3.1.5

// <<< Data >>>
int dpu_missionCollect      (int i_nodeID,    int i_switch);																								// 3.1.6**
int dpu_missionCollectAtOnce(int i_nodeID[8], int i_switch[8]);																								// 3.1.7**
int dpu_collectStatus       (int i_nodeID,    int *ip_switch, int *ip_bufferID, int *ip_mode);																// 3.1.8**
int dpu_bufferChange        (int i_nodeID,    int i_bufferID);																								// 3.1.9**
int dpu_setOverWriteMode    (int i_nodeID, int i_bufferID,      int i_mode);																				// 3.1.10**
int dpu_getBlockNo          (int i_nodeID, int i_missionDataID, int i_bufferID, int *ip_blockNo);															// 3.1.11**
int dpu_seekOldestBlock     (int i_nodeID, int i_missionDataID, int i_bufferID, M_T_BLOCK_INFO *tp_info);													// 3.1.12**
int dpu_seekNewestBlock     (int i_nodeID, int i_missionDataID, int i_bufferID, M_T_BLOCK_INFO *tp_info);													// 3.1.13**
int dpu_shiftBlock          (int i_nodeID, int i_missionDataID, int i_bufferID, int i_shiftCnt, M_T_BLOCK_INFO *tp_info);									// 3.1.14**
int dpu_getBlock            (int i_nodeID, int i_missionDataID, int i_bufferID, M_T_BLOCK_INFO *tp_info, unsigned char *ucp_blockBuff, int *ip_busyFlag);	// 3.1.15**
int dpu_getReply            (int i_nodeID, int i_missionDataID, int i_bufferID, M_T_BLOCK_INFO *tp_info, int , int , int , unsigned char *, int *);			// 3.1.16**
int dpu_releaseBlock      (int i_nodeID, int i_missionDataID, int i_bufferID, int i_blockCnt);																// 3.1.17	ENA

// <<< Time >>>
int dpu_getTime             (M_T_TIME_INFO *tp_timeInfo);																									// 3.1.18

// <<< TLM >>>
int dpu_putTelemetry        (M_T_CCSDS_HDR_INFO *tp_tlmInfo, int i_size, unsigned char *ucp_buff, int *ip_busyFlag);										// 3.1.19
// int dpu_putRComp (M_T_CCSDS_HDR_INFO *tp_tlmInfo, M_T_COMP_COMMENT *tp_comment, int i_x_size, int i_y_size, unsigned short *usp_buff, int *ip_busyFlag);	// 3.1.21
int dpu_putUserRequest      (unsigned char uc_reqestCode);																									// 3.1.22 ????

// <<< Sync >>>
int 			dpu_waitProcessingSlot(int i_count);																										// 3.1.23
unsigned int    dpu_waitSunpulse	  (int i_count);																										// 3.1.24
int 			dpu_delay    (unsigned int ui_delayTime);																									// 3.1.25

// <<< Stop >>>
void dpu_appStop(void);																																		// 3.1.26

// <<< WDT >>>
void dpu_WDTEna (int i_switch);																																// 3.1.27
void dpu_setWDT (int i_count);																																// 3.1.28

// <<< Mem Load >>>
int dpu_missionMemLoad(int i_nodeID, unsigned int ui_address, unsigned char uc_memBuff[], int i_dataSize );													// 3.1.29

// <<< DPU >>>
void dpu_getDPUInfo( M_T_DPU_INFO *dpuInfo );																												// 3.1.30
// void dpu_getErrorInfo( M_T_DPU_ERROR_INFO *errorInfo );																										// 3.1.31(�v?)
int  dpu_readEEPROM( unsigned int addr, unsigned int size, unsigned char *data );																			// 3.1.32 !!new!!

void dpu_app01(int mode);																																	// A1
void dpu_app02(int mode);																																	// A1
void dpu_app03(int mode);																																	// A1
void dpu_app04(int mode);																																	// A1
void dpu_app05(int mode);																																	// A1
void dpu_app06(int mode);																																	// A1
void dpu_app07(int mode);																																	// A1
void dpu_app08(int mode);																																	// A1
void dpu_app09(int mode);																																	// A1
void dpu_app10(int mode);																																	// A1
void dpu_app11(int mode);																																	// A1
void dpu_app12(int mode);																																	// A1
void dpu_app13(int mode);																																	// A1
void dpu_app14(int mode);																																	// A1
void dpu_app15(int mode);																																	// A1
void dpu_app16(int mode);																																	// A1

void dpu_setPrio(void);																																		// B4.1
void dpu_definePrio(int i_appNo, int i_priority);																											// B4.2

int  dpu_sendDpuMessage(unsigned char *ucp_buff, int i_offset, int i_size, int *ip_busyFlag);																// B6.1
int  dpu_recvDpuMessage(unsigned char *ucp_buff, int i_offset, int i_size, int *ip_busyFlag);																// B6.2

// int  dpu_setCompParam(M_T_COMP_PARAM *tp_compParam, int *ip_busyFlag);																						// B7.1

int  dpu_sendRdnReadCommand ( unsigned int address, unsigned int size );																					// G4.1
int  dpu_sendRdnWriteCommand( unsigned char buff[], unsigned int address, unsigned int size );																// G4.2
int  dpu_getRdnReadReply    ( unsigned char buff[], unsigned int offset, unsigned int size );																// G4.3		CHK
void dpu_getRdnIFStatus     ( M_T_RDN_IF_STATUS *rdnIfStatus );																								// G4.4		CHK
void dpu_clearRdnIFStatus   ( void );																														// G4.5		CHK
void dpu_putRdnHK           ( unsigned char buff[] );																										// G4.6		APP06


// *****OLD*****
//void dpu_safetyMode(int i_mode);
//int  dpu_sendRMAPWriteSafety(int i_nodeID, unsigned int ui_addr_R, unsigned char *ucp_writeBuff, int i_dataSize);

#endif /* _DPU_API_PROTO_H_ */