レビュー前のソフトです
rpdd_ver2.cpp
- Committer:
- yousei
- Date:
- 2017-09-03
- Revision:
- 0:dd23201e55ee
File content as of revision 0:dd23201e55ee:
#include "mbed.h" #include "rpdd_ver2.h" #include "fm_dd.h" #include "missionDR.h" Fm transmitter; MissionDR dr; RPDD::RPDD() { camera_num1=1; camera_num2=1; camera_num3=1; downlink_cnt=1; practical_dl_cnt=0; com_style=0; save_data_id1=1; save_data_id2=1; save_data_id3=1; readout_block_num1=1; readout_block_num2=1; readout_block_num3=1; loop_cnt = 1; readout_byte = 0; process_stage = 1; } void RPDD::first_tlm_sending(uint8_t camera_num,uint8_t save_data_id) { int block_num = 0; uint8_t first_telemetly[7]= {0},photo_info[512]= {0}; block_num = 1 + (save_data_id-1)*321; dr.read(photo_info,block_num,1); first_telemetly[0]=4; first_telemetly[1]=camera_num; first_telemetly[2]=save_data_id; for(int i=0; i<4; i++) { first_telemetly[i+3]=photo_info[i]; } transmitter.send(first_telemetly,7); loop_cnt++; process_stage++; } void RPDD::photo_data_sending_afsk(uint8_t camera_num,uint8_t save_data_id,uint8_t readout_block_num) { int block_num=0; uint8_t photo_data[512]= {0},packet[128]= {0}; block_num = 1 + (save_data_id-1)*321 + (camera_num-1)*80 + readout_block_num; dr.read(photo_data,block_num,1); if(readout_byte == 512) { process_stage++; readout_byte =0;//読み出したバイト数が512ということは1ブロック分送信が終了しているのでリセット } else if(readout_byte<=512) { for(int i=0; i<128; i++) { packet[i]=photo_data[readout_byte]; readout_byte++; } } else { } readout_byte = readout_byte + 128; transmitter.send(packet,128); loop_cnt++; if(loop_cnt == 16) { process_stage=1; practical_dl_cnt++; loop_cnt=0; } else {} } void RPDD::photo_data_sending_gmsk(uint8_t camera_num,uint8_t save_data_id,uint8_t readout_block_num) { int block_num=0; uint8_t photo_data[512]= {0},packet1[128]= {0},packet2[128]= {0}; block_num = 1 + (save_data_id-1)*321 + (camera_num-1)*80 + readout_block_num; dr.read(photo_data,block_num,1); for(int i=0; i<256; i++) { packet1[i]=photo_data[i]; packet2[i]=photo_data[i+256]; } transmitter.send(packet1,256); transmitter.send(packet2,256); loop_cnt = loop_cnt+2; if(loop_cnt == 10) { practical_dl_cnt++; loop_cnt = 0; } else {} } int RPDD::random_photo_data_downlink(uint8_t* uart_data) { int flag_RPDD = 0; camera_num1 = uart_data[3]>>6; camera_num2 = uart_data[3]<<2; camera_num2 = camera_num2>>6; camera_num3 = uart_data[3]<<4; camera_num3 = camera_num3>>6; downlink_cnt = uart_data[3]<<6; downlink_cnt = downlink_cnt>>6; com_style = uart_data[4]>>5; save_data_id1 = uart_data[4]<<4; save_data_id1 = save_data_id1>>4; save_data_id2 = uart_data[5]>>4; save_data_id3 = uart_data[5]<<4; save_data_id3 = save_data_id3>>4; readout_block_num1 = uart_data[6]; readout_block_num2 = uart_data[7]; readout_block_num3 = uart_data[8]; if(com_style==0) { switch(process_stage) { case 1: first_tlm_sending(camera_num1,save_data_id1); break; case 2: photo_data_sending_afsk(camera_num1,save_data_id1,readout_block_num1); break; case 3: first_tlm_sending(camera_num2,save_data_id2); break; case 4: photo_data_sending_afsk(camera_num2,save_data_id2,readout_block_num2); break; case 5: first_tlm_sending(camera_num3,save_data_id3); break; case 6: photo_data_sending_afsk(camera_num3,save_data_id3,readout_block_num3); break; default: return 0; } } else { switch(process_stage) { case 1: first_tlm_sending(camera_num1,save_data_id1); photo_data_sending_gmsk(camera_num1,save_data_id1,readout_block_num1); break; case 2: first_tlm_sending(camera_num2,save_data_id2); photo_data_sending_gmsk(camera_num2,save_data_id2,readout_block_num2); break; case 3: first_tlm_sending(camera_num3,save_data_id3); photo_data_sending_gmsk(camera_num3,save_data_id3,readout_block_num3); default: return 0; } } if(practical_dl_cnt==downlink_cnt) { flag_RPDD = 1; } else { flag_RPDD = 0; } return flag_RPDD; }