Article # 128, added by Geoworks, historical record
| first | previous | index | next | last |

Fax driver INI settings and misc. information





1) What are the pertinent .ini settings for fax?

Here are the fax-related ini settings.  I tried to comment things that 
don't seem obvious.

[printer]		
printers = {
Fax Print Driver on Unknown
Adobe LaserJet II Cartridge (PostScript) on COM2
}
numPrinters = 1
count = 2
numFacsimiles = 1
defaultPrinter = 0

[Fax Print Driver on Unknown]
type = 2
driver = EC Fax Print Driver
device = Fax Print Driver
port = UNKNOWN
intermittent = false

[media]
com2 = 0400000003000000		; tells mailbox fax is available 
com3 = 01000000
com1 = 01000000

[FAX]
senderName = Jim Wood who has a very very long name that goes off the page
senderCompany = Geoworks
senderVoiceNum = 206.545.0327
senderFaxNum = 206.545.1050
senderStationID = Jimmy's fax machine

[modemLurker]
detectData = false	; don't look for a data call	
detectFax = true	; do answer fax calls
faxAppToken = FAXR	; application to launch on receive
faxAppManID = 0	
dataDriver = EC Class 2 Fax Input Driver
dataDriverEntry = 14	
autoAnswer = true	; used by faxreceive also
ringThreshold = 1	; "                  "

[faxIn]
faxinDriverName = EC Class 1 Fax Input Driver
class = 2
capabilities = 1,5,0,0,0,0,0,0  ; set via fax preferences
comPort = 2

[faxout]
flags = 6			; FaxoutDialFlags in faxOutDr.def
faxoutDriverName = EC Class 1 Fax Output Driver
class = 1
comPort = 0
capabilities = 05001000
timeout = 30

[coverPage]
path = F:\ensec\userdata\template\fax_temp
scrapbook = Fax templates
scrap = Coverpage template


2) What happens when memory gets low during fax receive?

If we run out when we are about to answer the phone, we don't answer. 
 
If we run out while we are receiveing image data we ignore all the extra
data.  Any data that has already been written to the file will be kept
(so partial pages are not deleted, nor are complete pages).

If we are out of space when we are going to start a page, we end the session.
So, if we ran out of space during page 2, we will wait until we are done with
that page before we end the session (the sender can't be told to stop in the
middle of a page).
 
If we are unable to save our faxfile because we ran out of space, we delete
the last page and try again, we delete pages until we can save the file.
So in this case you might not actually get a partial page even though we 
tried to keep it.  If all the pages get deleted then we nuke the file.


3) Do the faxin drivers and faxrec communicate via gcn lists?

No.  Faxrec (and the faxsend transport driver) register with the
driver they are using.  When they do that they pass an optr, and a few 
messages that are to be sent to that optr for whatever communicating 
needs to be sent back.


                mov     cx, es:[processHandle]

                mov     ax, MSG_FAXRECEIVE_TIMER
                mov     bx, MSG_FAXRECEIVE_FAX_NOTIFICATION
                mov     bp, MSG_FAXRECEIVE_UPDATE_STATUS

                mov     di, DR_FAXIN_REGISTER
                call    es:[receiveDriver]       ; carry set on failure


So the input driver will be sending MSG_FAXRECEIVE_FAX_NOTIFICATION to the
process object when it wants to send out a FRFN_*

Whenever faxrec is to "send" something back it just calls the driver function
(DR_FAXIN_*)


4) Do the fax in/out drivers run on their own threads?

No.  They run on the thread of the caller.  The faxsend transport driver
creates a thread whose only job is to service the notifications from the
output driver (until the driver is done, then it does cleanup stuff).
Faxreceive uses its process thread to run the driver.