/*
 * OutProcessTxTaskClass.cpp
 *
 *  Created on: 2018/09/25
 *      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 "OutProcessTxTaskClass.h"

OutProcessTxTaskClass::OutProcessTxTaskClass()
{
    // TODO Auto-generated constructor stub

}

OutProcessTxTaskClass::~OutProcessTxTaskClass()
{
    // TODO Auto-generated destructor stub
}


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

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

    while(1) {

    // 送信データ転送要求イベント待ち
        UInt events = Event_pend(taskParam.eventHnd, Event_Id_NONE, Event_Id_00, BIOS_WAIT_FOREVER);

//        UART_printf("Tx Task Start /n");

    // 未使用の送信データのアドレスを取得
        EC_T_BYTE* txDataPtr;
        txDataPtr = taskParam.dataBuffer->getOutDataWriteBuffer();
    // 共通バッファから転送（最終的にはDMA転送）
        if (txDataPtr != NULL) {
            memcpy(txDataPtr, taskParam.outputDataBuff, 192);
            // 読出し完了を通知
            taskParam.dataBuffer->indMoveEnd(txDataPtr);

//            UART_printf("Tx Data move end \n");
        } else {
            UART_printf("no buffer for transmission data.");
        }
    }


}
