-- vim:set ft=lua:
dofile(mg.document_root..'\\api\\util.lua')

edcb.htmlEscape=15

post=AssertPost()

edcbnosuspend=EdcbModulePath()..'\\Tools\\edcbnosuspend.exe'

if post then
  if mg.get_var(post,'suspend') or mg.get_var(post,'hibernate') then
    if INDEX_ENABLE_SUSPEND then
      for i=1,100 do
        f=edcb.io.open('\\\\.\\pipe\\EpgTimerSrvNoWaitPipe','r+b')
        if f then
          --CMD_EPG_SRV_SUSPEND(=1051)を送る
          f:write(string.char(1051%256,math.floor(1051/256),0,0))
          f:write(string.char(2,0,0,0,(mg.get_var(post,'hibernate') and 2 or 1),255))
          f:flush()
          --CMD_SUCCESS(=1)を確認
          ok=(f:read(4) or '')=='\1\0\0\0'
          f:close()
          break
        end
        edcb.Sleep(10)
      end
    end
    messege='スタンバイに移行'..(ok and 'します' or 'できません (もうすぐ予約が始まるなど)')
  elseif mg.get_var(post,'epgcap') then
    messege='EPG取得を開始'..(edcb.EpgCapNow() and 'しました' or 'できませんでした')
  elseif mg.get_var(post,'epgreload') then
    messege='EPG再読み込みを開始'..(edcb.ReloadEpg() and 'しました' or 'できませんでした')
  elseif mg.get_var(post,'nosuspend')=='y' then
    edcb.os.execute('start "" /b "'..edcbnosuspend..'" -')
    messege='edcbnosuspend.exeを起動しました'
  elseif mg.get_var(post,'nosuspend')=='n' then
    TerminateCommandlineLike('edcbnosuspend.exe','%')
    messege='edcbnosuspend.exeを停止しました'
  end
elseif mg.get_var(mg.request_info.query_string,'notify') then
    messege=edcb.GetNotifyUpdateCount(mg.get_var(mg.request_info.query_string,'notify'))
end

ct='<?xml version="1.0" encoding="UTF-8" ?><entry><info>'
  ..(messege or '不正値入力')..'</info></entry>'
mg.write(Response(200, 'text/xml', 'utf-8', #ct) ..'\r\n')
if mg.request_info.request_method~='HEAD' then
  mg.write(ct)
end
