I think you should be able to detect it quite reliably by knowing the electrical properties of the pins. USB hosts pull the DP and DN data lines low with 15kOhm resistance. USB devices pull the DP line (DN line if it's a slow speed device) to 3 volts with a 1.5K resistance. If the device at the other end pulls up and also you pull up, nothing would happen because the device doesn't react to the extra pull-up. So you could use this to check if the other end starts to send packets to the bus.
I suggest a procedure something like this:
You could start by pulling the DN line weakly high (with something like 200K to 1M resistor). You could detect a pull-down on the DN line to give a first hint that there's a host at the other side.
Then measure the VBUS, if it's high, it's a further indication that there is a host at the other side. If so, activate a 1.5k pull-up (to 3 volts) on the DP line and listen for incoming packets. If there actually is a host on the other side, it will issue a bus reset and send a GET_DESCRIPTOR packet to the bus. If this happens, you know that the other chip is a host. I suggest to do it in this order as if there's a device at the other side, it will not react to the DP pull-up.
If nothing happens, there may be a device at the other side. Release your DP pull-up and see if it's still pulled up at the other side. If that is so, then there is probably a self-powered device at the other side. If not, then start driving the VBUS line to 5 volts. At this time at the latest you should see the device's 1.5k pull-up tp 3 volts on the DP line. If you see instead 3 volts in the DN line, then there's a slow speed device such as a keyboard or a mouse at the other side.
Now act as a host and issue a BUS RESET and GET DESCRIPTOR : DEVICE DESCRIPTOR to address 0, endpoint 0. The device should now answer and finally at this point you know for sure that there is a usb device at the other end. If you haven't enabled your 5V drive to VBUS so far, I suggest that you enable it now. Test with all the devices you intend to support.
Ok, this is a hack, and the official bus doesn't work this way because if both ends would work like this then it would be a matter of luck (timing) if it detects correctly or not. But if the other end is a well-behaving USB entity, then I think that it should work. I've done a fair bit of work on the USB, but not this exact thing.
You can certainly use OTG hardware in the microcontroller to do a USB host only. You don't need to use the OTG extensions for anything. In fact, you shouldn't even mention anything about OTG. What you are doing is a host, and thus you should use a female A connector. And if you intend to connect to a USB flash memory, what other connector could you use? Traditional USB flash memories generally are always plugged to A connectors.
So go right ahead and use the female A connector. You're using it exactly as it's supposed to be used. Remember that you need to provide 5V power to the female A connector.
Best Answer
No, it is not correct to assume that every Type-C port uses PD - power delivery specifications. Power Delivery is independent and optional feature.
This is the standard function of a Type-C port. No need for PD here.
Again, this is the standard function of a Type-C port, no Power Delivery is necessary. If the port carries the USB host function and is designed to drive up to 3 A power, it should "advertise" this capability by having 10k pullups on CC lines. If the port can source only 1.5 A, it should have 22k pull-up. If there is enough power only for 500 mA, the port should have 56k pull-up to 5V. A simple voltage comparator of device side is sufficient to determine source port power capability. The PD (or its subset) is required only if 5 A is designed in, or higher voltages are used.