

#include "함수묶음.h"

#include "GUI_모양만들기.h"
#include "GUI_설정상위.h"

#include "main.h"
#include "GUI.h"
#include "일반함수.h"

#include "GUI\GUI_모양만들기.h"

//[2011.11.25.금][추가!!!]
#include "AVR-ISP\AVR-병렬접근.h"

#include "AVR-ISP\AVR-ISP.h"


void Ide_모양만들기_설정상위(void)
{
  //[2011.09.25.일][생성!!!]{----
  //[설정상위] 관련 비트항목을 만든다.
  //}---------------------------

  //[VAR]
  //{
      char  문자열[256];

      int   i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[Lb_설정상위]
  //{
      _GLabel_생성_(gui->Lb_설정상위, gui->GVmos, GID_Lb_설정상위,
                   _GLabel_X_(gui->Lb_설정확장, 0, d_읽기) + d_설정배치간격, _GLabel_Y_(gui->Lb_설정확장, 0, d_읽기),
                   60, 16,
                   true);
      _GLabel_제목_(gui->Lb_설정상위, "[설정상위]", d_쓰기);
      _GLabel_자동폭_(gui->Lb_설정상위, true, d_쓰기);

  //}

  //[설정상위비트]
  //{
      //비트번호(7) 부터 위에서 아래로 배치한다.
      for(i = 7; i >= 0; i--)
      {
        //[Chk_설정상위비트]
        //{
            _GCheckButton_생성_(gui->Chk_설정상위비트[i], gui->GVmos, GID_Chk_설정상위비트 + i,
                               _GLabel_X_(gui->Lb_설정상위, 0, d_읽기) + 0,
                               _GLabel_Y_(gui->Lb_설정상위, 0, d_읽기) + _GLabel_높이_(gui->Lb_설정상위, 0, d_읽기) + (18 * (7 - i)) + 2 + 2,
                               true);
            _GCheckButton_확인_(gui->Chk_설정상위비트[i], false, d_쓰기);

            //상태만 중요하므로 [이벤트] 는 사용하지 않는다.

        //}

        //[Lb_설정상위비트]
        //{
            _GLabel_생성_(gui->Lb_설정상위비트[i], gui->GVmos, GID_Lb_설정상위비트 + i,
                         _GLabel_X_(gui->Lb_설정상위, 0, d_읽기) + 0 + 14,
                         _GLabel_Y_(gui->Lb_설정상위, 0, d_읽기) + _GLabel_높이_(gui->Lb_설정상위, 0, d_읽기) + (18 * (7 - i)) + 2,
                         12, 16,
                         true);

            _GLabel_제목_(gui->Lb_설정상위비트[i], "-", d_쓰기);
            _GLabel_자동폭_(gui->Lb_설정상위비트[i], true, d_쓰기);

        //}

      }

  //}

  //[쓰기/읽기]
  //{
      //[Btn_설정상위_쓰기]
      //{
          _GButton_생성_(gui->Btn_설정상위_쓰기, gui->GVmos, GID_Btn_설정상위_쓰기,
                        _GCheckButton_X_(gui->Chk_설정상위비트[0], 0, d_읽기),
                        //가장 아래의 비트0 아래에 배치한다.
                        _GCheckButton_Y_(gui->Chk_설정상위비트[0], 0, d_읽기) + 12 + 8,
                        60, 18,
                        true);
          _GButton_제목_(gui->Btn_설정상위_쓰기, "쓰기", d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->Btn_설정상위_쓰기, true, d_쓰기);

          //}

          //[퐁선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->Btn_설정상위_쓰기,
               "상위설정을 AVR 에 기록합니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->Btn_설정상위_쓰기, false, d_쓰기);

          //}

      //}

      //[Btn_설정상위_읽기]
      //{
          _GButton_생성_(gui->Btn_설정상위_읽기, gui->GVmos, GID_Btn_설정상위_읽기,
                        _GCheckButton_X_(gui->Chk_설정상위비트[0], 0, d_읽기) + _GButton_폭_(gui->Btn_설정상위_쓰기, 0, d_읽기) + 4,
                        //가장 아래의 비트0 아래에 배치한다.
                        _GCheckButton_Y_(gui->Chk_설정상위비트[0], 0, d_읽기) + 12 + 8,
                        60, 18,
                        true);
          _GButton_제목_(gui->Btn_설정상위_읽기, "읽기", d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->Btn_설정상위_읽기, true, d_쓰기);

          //}

          //[퐁선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->Btn_설정상위_읽기,
               "상위설정을 AVR 로부터 읽어들입니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->Btn_설정상위_읽기, false, d_쓰기);

          //}

      //}

  //}

}

void Ide_모양삭제_설정상위(void)
{
  //[2011.11.22.화][생성!!!]{--------
  //[설정상위] 관련 비트항목을 삭제한다.
  //
  //[2012.04.30.월][수정!!!]---------
  //안전을 위하여 선언한 역순으로 삭제한다.
  //}-------------------------------

  //[VAR]
  //{
      int  i;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GButton_삭제_(gui->Btn_설정상위_읽기);
  _GButton_삭제_(gui->Btn_설정상위_쓰기);

  for(i = 7; i >= 0; i--)
  {
    _GCheckButton_삭제_(gui->Chk_설정상위비트[i]);
    _GLabel_삭제_(gui->Lb_설정상위비트[i]);

  }

  _GLabel_삭제_(gui->Lb_설정상위);

}

void Btn_설정상위_쓰기_이벤트_MClick(void)
{
  //[2011.09.25.일][생성!!!]
  //[2011.11.04.금][수정!!!]
  //[2011.11.23.수][수정!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[<AVR-ISP/ISP활성화> 구분 처리]
  //{
      //[2011.11.23.수][수정!!!]{---------------------
      //[AVR-ISP] 와 [ISP 활성화] 상태를 구분하여 처리한다.
      //}--------------------------------------------

      if(_GCheckButton_확인_(gui->Chk_ISP활성화, NULL, d_읽기) == false)
      {
        //[!]{-------------
        //[AVR-ISP] 로 처리.
        //}----------------

        //[전처리]
        //{
            if(Ide_통신개방확인() != true)
            {
              //[2011.11.06.일][추가!!!]{-------------------
              //통신포트가 열려있지 않은 경우는 아예 처리하지 않는다.
              //}------------------------------------------

              Ide_알림(d_오류, "통신포트가 열려있지 않습니다.");

              return;

            }

            if(Isp_맷돌존재확인() != true) return;
            if(Isp_ISP진입() != true)    return;
            if(Isp_고유번호확인() != true) return;

        //}

        //[처리내용]
        //{
            if(Isp_상위설정_쓰기() != true) return;

        //}

      }
      else
      {
        //[!]{---------------
        //[ISP 활성화] 로 처리.
        //}------------------

        //[전처리]
        //{
            if(Ide_통신개방확인() != true)
            {
              //[2011.11.06.일][추가!!!]{-------------------
              //통신포트가 열려있지 않은 경우는 아예 처리하지 않는다.
              //}------------------------------------------

              Ide_알림(d_오류, "통신포트가 열려있지 않습니다.");

              return;

            }

            if(Isp_맷돌존재확인() != true) return;

            //[병렬방식] 접근 함수를 사용.
            if(Isp_병렬_진입() != true) return;
            if(Isp_병렬_고유번호확인() != true) return;

        //}

        //[처리내용]
        //{
            //[병렬방식] 접근 함수를 사용.
            if(Isp_병렬_상위설정_쓰기() != true) return;

        //}

      }

  //}

}

void Btn_설정상위_읽기_이벤트_MClick(void)
{
  //[2011.09.25.일][생성!!!]
  //[2011.11.04.금][수정!!!]
  //[2011.11.25.금][수정!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[<AVR-ISP/ISP활성화> 구분 처리]
  //{
      //[2011.11.23.수][수정!!!]{---------------------
      //[AVR-ISP] 와 [ISP 활성화] 상태를 구분하여 처리한다.
      //}--------------------------------------------

      if(_GCheckButton_확인_(gui->Chk_ISP활성화, NULL, d_읽기) == false)
      {
        //[!]{-------------
        //[AVR-ISP] 로 처리.
        //}----------------

        //[전처리]
        //{
            if(Ide_통신개방확인() != true)
            {
              //[2011.11.06.일][추가!!!]{-------------------
              //통신포트가 열려있지 않은 경우는 아예 처리하지 않는다.
              //}------------------------------------------

              Ide_알림(d_오류, "통신포트가 열려있지 않습니다.");

              return;

            }

            if(Isp_맷돌존재확인() != true) return;
            if(Isp_ISP진입() != true)    return;
            if(Isp_고유번호확인() != true) return;

        //}

        //[처리내용]
        //{
            if(Isp_상위설정_읽기() != true) return;

        //}

      }
      else
      {
        //[!]{---------------
        //[ISP 활성화] 로 처리.
        //}------------------

        //[전처리]
        //{
            if(Ide_통신개방확인() != true)
            {
              //[2011.11.06.일][추가!!!]{-------------------
              //통신포트가 열려있지 않은 경우는 아예 처리하지 않는다.
              //}------------------------------------------

              Ide_알림(d_오류, "통신포트가 열려있지 않습니다.");

              return;

            }

            if(Isp_맷돌존재확인() != true) return;

            //[병렬방식] 접근 함수를 사용.
            if(Isp_병렬_진입() != true) return;
            if(Isp_병렬_고유번호확인() != true) return;

        //}

        //[처리내용]
        //{
            //[병렬방식] 접근 함수를 사용.
            if(Isp_병렬_상위설정_읽기() != true) return;

        //}

      }

  //}

}

