/*
 *========================================================================
 *
 *   시스템명 : 요금징수 시스템
 *   파 일 명 :
 *   작 성 자 : 오효섭 (catacath@neighbor21.co.kr)
 *   작 성 일 : 2012.09.17
 *   수 정 일 :
 *   설    명 :
 *
 *========================================================================
*/

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <sys/time.h>

#include "mmi_handler.h"
#include "dir_path.h"
#include "file_no.h"
#include "ipc_def.h"
#include "file_lb.h"  /* 공통 Library Prototypes */

#include "bas_tbl.h"

/* 부스 문자메시지 지령 */
int cmd_booth_message(PACKET_RQ *rq, char *msg)
{
    int len, max_lane_cnt, lane_type_no;
    char lane_no[2+1];
    char plz_id[6+1];
    time_t ctime;

    struct tm *ptm;
    struct basic_tbl bt;
    struct write_info wi;       /* work info            */
    struct lo_lane_ctrl_cmd llcc;      /* 제어요청 info atgj   */
    struct lo_lane_ctrl_reply llcr;      /* 제어반환 info atgj   */

    memset(lane_no, 0x0, sizeof(lane_no));
    memset(plz_id, 0x0, sizeof(plz_id));

    memcpy(plz_id, msg+8, 3);
    memcpy(lane_no, msg+43, 2);

    /* 작업정보 처리 */
    memset(&wi, 0, sizeof(struct write_info));
    memset(&bt, 0, sizeof(struct basic_tbl));

    time(&ctime);
    ptm = localtime(&ctime);
    sprintf(wi.year, "%04d", ptm->tm_year + 1900);
    sprintf(wi.mon, "%02d", ptm->tm_mon+1);
    sprintf(wi.day, "%02d", ptm->tm_mday);
    sprintf(wi.hr, "%02d", ptm->tm_hour);
    sprintf(wi.min, "%02d", ptm->tm_min);

    memcpy(wi.plz_id, plz_id, 6);

    /* 기초정보 File read */
    memcpy(bt.plz_id, plz_id, 6);

    len = lb_freadx(&wi, FNO_BASICTBL, &bt, FEQUAL);
    if (len < 0) {
        proc_log("LINETEST 기초사항을 읽을 수 없습니다.");
        return 5010;
    }

    max_lane_cnt = MAX_LANE;

    if (atoi(lane_no) > max_lane_cnt)
    {
        proc_log("LINETEST 차로번호 범위 오류");
        return 5011;
    }

    /* 하위 차로에 지령 처리 */
    memset(&llcc,0x0,sizeof(struct lo_lane_ctrl_cmd));
    memset(&llcr,0x0,sizeof(struct lo_lane_ctrl_reply));

    memcpy(wi.plz_id, plz_id, 6);
    memcpy(wi.lane_no, lane_no, 2);
    //llcc.cmd = LW_SMS_DATA;
    memcpy(llcc.msg, msg+45, 80);

    /* 차로형태(통신구분)=0: - LAN,1:SERIAL,2:기존LAN(Polling)*/
    lane_type_no = atoi(bt.lane_info[atoi(wi.lane_no)-1].lane_type);

    /* 차로 통신별 지령 처리 */
    lb_low_proc(&wi, &llcc, &llcr);

    if (llcr.rsp != 0)
    {
        proc_log("%s",llcr.msg);
        return llcr.rsp;
    }
    else
    {
        proc_log("%s",llcr.msg);
        return llcr.rsp;
    }

    exit(0);
}
