/*
 * 入力プロセスデータ受信スレッドクラス
 * InProcessRxTask.cpp
 *
 *  Created on: 2018/09/19
 *      Author: shingo
 */

#include <string.h>
#include <EcType.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Event.h>
#include <xdc/runtime/Error.h>

#include <ti/drv/uart/UART.h>
#include <ti/drv/uart/UART_stdio.h>

#include "InProcessRxTaskClass.h"


extern EC_T_BYTE inputProcessData[200];


/**
 * コンストラクタ
 */
InProcessRxTaskClass::InProcessRxTaskClass()
{
    // TODO Auto-generated constructor stub

}

/**
 * デストラクタ
 */
InProcessRxTaskClass::~InProcessRxTaskClass()
{
    // TODO Auto-generated destructor stub
}

/**
 * タスク（クラス）の初期化を行う。
 */
void InProcessRxTaskClass::init(ST_PRO_RX_TASK_PRAM* aParam) {
    // パラメータの保存
    memcpy(&taskParam, aParam, sizeof(ST_PRO_RX_TASK_PRAM));

}

/**
 * タスクメインループ処理
 * 本処理は、無限ループとする。
 */
void InProcessRxTaskClass::loopMain() {

//    Error_Block eb;
//    Error_init(&eb);
//    Event_Handle myEvent = Event_create(NULL, &eb);

//    Event_post(myEvent, UInt Event_Id_00);

    while(1) {

    // 受信完了イベント待ち
        UInt events = Event_pend(taskParam.eventHnd, Event_Id_NONE, Event_Id_00, BIOS_WAIT_FOREVER);

    // 最新受信データのアドレスを取得
        EC_T_BYTE* rxDataPtr;
        rxDataPtr = taskParam.dataBuffer->getInDataReceivedBuffer();
    // 共通バッファに転送（最終的にはDMA転送）

        if (rxDataPtr != NULL) {
            memcpy(taskParam.inputDataBuff, rxDataPtr, 192);
            // 読出し完了を通知
            taskParam.dataBuffer->indRxMoveEnd(rxDataPtr);
        }
    }


}



