
; -------------------------------------------------------------
; Gibt eine kurze Info als DragonDaemon-Requester aus
;
; Benoetigt Eintrag "blitzlibs:Amigalibs.res" in den
; Compiler-Optionen
; -------------------------------------------------------------

WBStartup

; -------------------------------------------------------------
; DragonDaemon-Komandos
; -------------------------------------------------------------

#DDCMD_EXITDAEMON   =0
#DDCMD_GETCOUNTER   =1
#DDCMD_DIALNUMBER   =2
#DDCMD_RESETCOUNTER =3
#DDCMD_INFO         =4
#DDCMD_REQUEST      =5
#DDCMD_ERROR        =6

; -------------------------------------------------------------
; DragonDaemon-Strukturen
; -------------------------------------------------------------

NEWTYPE.DD_Message
  dd_StdMsg.Message
  dd_Command.l
  dd_Arg0.l
  dd_Arg1.l
  dd_Options.l
  dd_Result.b[128]
  dd_Return.l
End NEWTYPE

; -------------------------------------------------------------
; Variablen-Typen definieren
; -------------------------------------------------------------

DEFTYPE.l
DEFTYPE.DD_Message *ddmsg

; -------------------------------------------------------------
; Programm initialisieren
; -------------------------------------------------------------

*ddmsg=AllocVec_(SizeOf.DD_Message,#MEMF_CLEAR|#MEMF_PUBLIC)
If *ddmsg
  *ddreply.MsgPort =CreateMsgPort_()        ; ReplyPort einrichten
  If *ddreply
    AddPort_ *ddreply                       ; ReplyPort in Systemliste eintragen
    BSR main                                ; Hauptprogramm starten
    RemPort_ *ddreply                       ; ReplyPort aus Systemliste entfernen
    DeleteMsgPort_ *ddreply                 ; ReplyPort freigeben
  EndIf
  FreeVec_ *ddmsg                           ; Arbeitsspeicher freigeben
EndIf
End

; -------------------------------------------------------------
; Versions-String
; -------------------------------------------------------------

.copyright
  Dc.b "$VER: Infotest 0.1 (13.04.99) by J.Reinert",0
  Even

; -------------------------------------------------------------
; Message an DragonDaemon schicken
; -------------------------------------------------------------

Function.l Send2Daemon{command.l,arg0.l,arg1.l,opt.l}
  SHARED *ddmsg,*ddreply                        ; Globale Variablen
  error=1                                       ; Fehler auf 1 setzen
  *ddmsg\dd_StdMsg\mn_ReplyPort=*ddreply        ; ReplyPort in Message schreiben
  *ddmsg\dd_StdMsg\mn_Length=SizeOf.DD_Message  ; Laenge der Message eintragen
  *ddmsg\dd_Command =command                    ; DragonDaemon-Befehl eintragen
  *ddmsg\dd_Arg0    =arg0                       ; Erster Parameter
  *ddmsg\dd_Arg1    =arg1                       ; Zweiter Parameter
  *ddmsg\dd_Options =opt                        ; Optionen
  *ddmsg\dd_StdMsg\mn_Node\ln_Type=#NT_MESSAGE  ; Struktur-Typ=Message
  dcrx=FindPort_(Null("DragonDaemon"))          ; MessagePort des Daemon suchen
  If dcrx<>0                                    ; Wenn Port gefunden...
    PutMsg_ dcrx,*ddmsg                         ; Message an Port schicken
    WaitPort_ *ddreply                          ; warten auf Antwort
    Repeat                                      ; Alle Nachrichten vom ReplyPort holen
      dummy=GetMsg_(*ddreply)
      If dummy<>0
        error=*ddmsg\dd_Return                  ; Fehler aus Reply holen
      EndIf
    Until dummy=0
  EndIf
  Function Return error
End Function

; -------------------------------------------------------------
; Hauptprogramm
; -------------------------------------------------------------

.main
  error=Send2Daemon{#DDCMD_INFO,Null("Dies ist eine Info!"),0,0}
RTS

