A C# class that allows:
1. Sending a TIFF file over fax using regular fax modems.
2. Listening to a given port, and automatically answering and receiving a fax after a given number of calls.
3. Sending a TIFF file over fax using a SIP trunk line.
The class must be completely open source and not rely on other compiled code. The class must be well designed and provide excellent, detailed error reports. The class must be completely configurable, including COM port to use, init string for modem, modem class setup, SIP trunk related data (username-password), etc.
The class MUST come with complete unit tests.