You can put a charge detector in parallel as long as you keep the stubs extremely short. I have done this before with a Fairchild charge detector. Don't remember the exact part number off the top of my head.
Or you could take a look at the BQ24392 from TI. It does its own enumeration (well, not enumeration... it does the charger detection upon initial connection, then connects the USB bus to the host), but it passes the detection results out, and it incorporates a USB bus switch so that the USB traces pass through it to the host. No stubs. It is specifically designed with USB 2.0 in mind. It correctly detects every type of charger in the known world, whether the charger is compliant with USB specifications or not.
But there may be a simpler option. How big is your battery? For smaller batteries (say less than 1 Ah) it may be easiest to simply always enable the 500 mA of current draw from USB. Of course, this means you will not comply strictly with the USB spec which dictates that until a profile is assigned, you have to stay under 100 mA. But in practice, it will work OK. It is rare, nowadays, to find a host which will object to the 500 mA being pulled from the USB port.
A standard classic USB host must always provide VBUS (+5V +- 10%) to a downstream port, so a device can initiate the connect sequence (pull D+ or D- high). The port must provide at least 500 mA (2.0 version) or 900 mA (3.0 version), regardless of whether there is any communication or attachment or else. These are "at least" requirements for classic USB 2.0 and USB 3.0 "high-power ports" and powered hubs, so they can supply more if they wish. The requirements are listed in Section 7.2 of USB 2.0 Specifications. Small battery-powered might have an exception.
NOTE1: VBUS must be supplied by host even in "sleep" (suspend state) mode.
--
NOTE2: if a host doesn't drive VBUS high, no attachment would/should occur, even if the device has own power. Connect requests (D+ or D-
pull-ups) must occur only if VBUS is present, by USB 2.0
specifications Sec.7.2.1. So it is a spec violation just to "have" the
pull-ups, the pull-up must be conditional with VBUS.
--
NOTE3: So, no VBUS => no communication. Becuse of this rule, no "partial" or "host-signaling" mode is possible without VBUS.
The 500 mA is a requirement for USB HOST. This supply number is frequently confused with a requirement for a USB DEVICE as consumer. A USB device SHOULD NOT draw more than 100 mA upon initial connect stage, and can draw full power only when it gets enumerated and receives "set_configuration ()" command. USB devices report their power requirements in device descriptor, during this inital "100mA" session. If the host has exhausted its power budget, it can stop the enumeration, effectively rejecting the device.
NOTE4: as one can see, there is no "negotiation", it is either "my [host] way", or "freeway".
--
NOTE5: USB hosts have no specified means to police actual power
consumption from its ports. USB host controllers don't have any
registers that can measure/report ports consumption. Therefore a host cannot enforce
the 100mA limit to police out bad devices that might violate the 100
mA specification, unless a drastic event of port overcurrent occurs.
The compliance to 100 mA limit was thought at the level of USB-IF
certification process.
In short, the 500 mA and 100 mA are requirements for different USB entities, one for hosts and hubs, and another for devices, again as described in Section 7.2.1. This is how it works from USB standard point of view.
Now things are a bit different with introduction of Type-C connector. Type-C devices (both hosts and peripherals) are prohibited to output VBUS, initially. So, instead of boldly having VBUS power on a Type-C port, the host must turn on VBUS source only if the port logic detects the presence of cable/device. It does this by sensing voltage level on "CC" (Communication Channel) pin. A Type-C host has a pull-up on both CC pins. A device (or legacy cable assembly) must have 5.1k pull-down. When device/cable is plugged in, the host detects that 5.k drags its pull-up down, and at this point the host has rights to engage VBUS power, and USB communication begins.
Best Answer
Yes. It both sends power and receives power over the same Vbus pin. The CC pin is used to determine which way power should initially flow (along with how much current can be sourced), and power is only applied to Vbus once a downward-facing-port detects an appropriate device has been attached. The direction of power flow can be changed later on using the power management protocol, which is a separate communications system sent over the CC pin (this is not supported on all devices).
What sort of IC hardware is required for each port depends on what features that port supports. Very little power management stuff is required if you are just making a simple dedicated peripheral or dedicated host port. If you want to use the new features, such as dual-role ports, and high power capacity, then you'll need to use a quite complicated power switching and control system. There are a few manufacturers who make chips to support this, but they are still not that common.
Lastly, Vconn is used to supply power to electronically marked cables and/or active cables. Electronically marked cables have a microcontroller inside them that can can report the cable's voltage and current capabilities to a port, while active cables have internal buffers for conditioning the super-speed data lines to allow longer cable lengths than would otherwise be possible. Vconn also has some other uses for Alternate Mode accessories (such as analog audio adaptors) but you are best to refer to the spec if you are planning on using these features.