אנו משתמשים במכשירים אלקטרוניים נפוצים כדי להתאים לשלושת הסוגים הללו: מקור – מטען; כיור - טלפון נייד; DRP – מחשב נייד או בנק חשמל.
עבור שלושה סוגי מכשירים, יהיו 9 שילובים של חיבור הדדי בתיאוריה. חייבות להיות שיטות חיבור שגויות (כגון מתאם חיבור מתאם) או שיטות חיבור שאינן בטוחות מי המקור (כגון בנק חשמל או מחשב נייד). אז עבור כל כך הרבה שילובים, איך בקר Type-C מגדיר את הממשק?
בקר Type-C משלים את כל תהליך הזיהוי והתקשורת באמצעות מיתוג המצב של מכונת המצב. להלן מספר מצבים עיקריים במכונת המצב.
1. Unattached.SRC, המקור נמצא במצב לא מחובר
2. Unattended.SNK, Sink נמצא במצב לא מחובר
3. AttachWait.SRC, מטרת מצב זה היא שהמקור יבטיח ש-CC1 ו-CC2 יישארו יציבים לאחר חיבור ההתקן
4. AttachWait.SNK, מטרת מצב זה היא ש-Sink יבטיח ש-CC1 ו-CC2 יישארו יציבים לאחר חיבור המכשיר
5. Attached.SRC, Source קובע שהמכשיר מחובר בהצלחה
6. Attached.SNK, Sink קובע שהמכשיר מחובר בהצלחה
5. Try.SRC, מצב זה מיועד למכשיר DRP לנסות להחליף תפקיד מקור
6. Try.SNK, מצב זה מיועד למכשיר DRP לנסות להחליף תפקיד Sink
תרחיש 1 מנגנון התנהגות בין מקור ל-Sink (מתאם וטלפון נייד)
להלן מנגנון ההתנהגות כאשר למקור מחובר התקן Sink:
(1) המקור והסינק נמצאים שניהם במצב הבלתי מחובר Unattached.SRC ו-Unattached.SNK
(2) Source detects that there is a pull-up resistor on the CC end of the Sink, and the Source state changes to Unattached.SRC --> AttachWait.SRC-->מצורף.SRC; המקור מפעיל את VBUS ו-VCONN.
(3) Sink detects VBUS, and the Sink state changes to Unattached.SNK --> AttachWait.SNK -->מצורף.SNK
(4) לאחר שהמקור והסינק נמצאים במצב המצורף
מקור מתאים את ערך ה-RP כדי להגביל את הזרם הנקלט ב-Sink
Sink מזהה את המתח vRd על Rd כדי לקבוע את הזרם המותר על ידי VBUS
המקור קובע אם ה-Sink מנותק על ידי ניטור CC. אם הוא מנותק, הוא נכנס ל-Unattached.SRC
Sink קובע אם המקור מנותק על ידי ניטור מתח ה-VBUS. אם הוא מנותק, הוא נכנס ל-Unattached.SNK

תרחיש 2 מנגנון התנהגות בין מקור ל-DRP (מטען ומחשב נייד)
להלן מנגנון ההתנהגות כאשר למקור מחובר התקן DRP:
(1) גם המקור וגם ה-DRP נמצאים במצב לא מחובר
המקור נמצא במצב Unattached.SRC - DRP עובר בין Unattached.SRC ל-Unattached.SNK
(2) Source detects that there is a Sink pull-up resistor on the CC end, then the Source state changes to Unattached.SRC --> AttachWait.SRC -->מצורף.SRC; המקור מפעיל את VBUS ו-VCONN.
(3) When DRP switches to Unattached.SNK and detects that the CC pin is pulled up, the DRP state changes to Unattached.SNK --> AttachWait.SNK -->מצורף.SNK
(4) לאחר שהמקור וה-DRP נמצאים במצב המצורף
המקור מתאים את ערך ה-RP כדי להגביל את הזרם הנקלט על ידי DRP (כלומר Sink)
DRP (כלומר Sink) מזהה את המתח vRd על Rd כדי לקבוע את הזרם המותר על ידי VBUS
המקור קובע אם Sink מנותק על ידי ניטור CC. אם הוא מנותק, הוא נכנס ל-Unattached.SRC-DRP (כלומר Sink) קובע אם המקור מנותק על ידי ניטור מתח VBUS. אם הוא מנותק, הוא נכנס ל-Unattached.SNK ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK

תרחיש 3 מנגנון התנהגות בין DRP ל-Sink (לפטופ וטלפון נייד)
להלן מנגנון ההתנהגות כאשר ל-DRP מחובר התקן Sink:
(1) גם DRP וגם Sink נמצאים במצב לא מחובר
DRP עובר בין Unattached.SRC ל-Unattached.SNK - Sink נמצא במצב Unnattached.SNK
(2) When DRP switches to Unattached.SRC and detects that the CC pin has a pull-down resistor, the DRP state changes to Unattached.SRC --> AttachWait.SRC -->מצורף.SRC; DRP (כלומר מקור) מפעיל את VBUS ו-VCONN.
(3) When the Sink detects VBUS, the Sink state changes to Unattached.SNK --> AttachWait.SNK -->מצורף.SNK
(4) לאחר שהמקור וה-DRP נמצאים במצב המצורף
DPR (כלומר מקור) מתאים את ערך Rp כדי להגביל את הזרם הנקלט ב-Sink - ה-Sink מזהה את המתח vRd על Rd כדי לקבוע את הזרם המותר על ידי VBUS
DRP (כלומר מקור) קובע אם ה-Sink מנותק על ידי ניטור CC. אם הוא מנותק, הוא נכנס ל-Unattached.SRC ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK
DRP (כלומר Sink) קובע אם המקור מנותק על ידי ניטור מתח ה-VBUS. אם הוא מנותק, הוא נכנס ל-Unattached.SNK

תרחיש 4 מנגנון התנהגות בין DRP ל-DRP (Power Bank ומחשב נייד)
לתקשורת בין DRP ל-DRP, ישנם שלושה מצבים. במצב אחד, שני המכשירים מחליטים מי הוא המקור או ה-Sink באופן אקראי; במצב השני, אחד ה-DRP מנסה להחליט להיות ה-Source באמצעות מנגנון Try.SRC; במצב השלישי, אחד מה-DRP מנסה להחליט להיות ה-Sink דרך מנגנון Try.SNK.
להלן מנגנון ההתנהגות כאשר התקן DRP מחובר ל-DRP:
תרחיש 1:
(1) שני התקני ה-DRP נמצאים במצב לא מחובר
DRP#1 ו-DRP#2 עוברים באופן אקראי בין Unattached.SRC ל-Unattached.SNK
(2) When DRP#1 switches to Unattached.SRC and detects that the CC pin is pulled down by DRP#2, the state of DRP#1 changes to Unattached.SRC--> AttachWait.SRC -->מצורף.SRC; DRP#1 (כלומר מקור) מפעיל את VBUS ו-VCONN.
(3) When DRP#2 switches to Unattached.SRC and detects that the CC pin is pulled up, the state of DRP#2 changes to Unattached.SNK --> AttachWait.SNK -->מצורף.SNK
(4) לאחר שהמקור וה-DRP נמצאים במצב המצורף
DPR#1 (כלומר מקור) מתאים את ערך ה-RP כדי להגביל את הזרם הנקלט ב-DRP#2 (כלומר Sink)
DRP#2 (כלומר Sink) מזהה את המתח vRd על Rd כדי לקבוע את הזרם המותר על ידי VBUS
DRP#1 (כלומר מקור) קובע אם Sink מנותק על ידי ניטור CC. אם כן, הוא נכנס ל-Unattached.SRC ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK
DRP#2 (כלומר Sink) קובע אם המקור מנותק על ידי ניטור מתח VBUS. אם כן, הוא נכנס ל-Unattached.SNK ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK

מקרה 2:
(1) שני התקני ה-DRP נמצאים במצב לא מחובר
DRP#1 ו-DRP#2 עוברים באופן אקראי בין Unattached.SRC ל-Unattached.SNK
(2) When DRP#1 switches to Unattached.SRC and detects that the CC pin is pulled down by DRP#2, the state of DRP#1 changes to Unattached.SRC--> AttachWait.SRC -->מצורף.SRC; ; DRP#1 (כלומר מקור) מפעיל את VBUS ו-VCONN.
(3) When DRP#2 switches to Unattached.SRC and detects that the CC pin is pulled up, the state of DRP#2 changes to Unattached.SNK -->AttachWait.SNK
(4) DRP#2 is in AttachWait.SNK and wants to switch to the Source role. The state of DRP#2 changes to AttachWait.SNK -->Try.SRC; ומושך את סיכת ה-CC
(5) DRP#1 no longer detects DRP#2 pulling down the CC pin, so the state changes to Attached.SRC --> UnattachWait.SNK -->AttachWait.SNK; ומכבה את VBUS ו-VCONN, ומחליף את הנגד הנפתח בפין CC
(6) DRP#2 detects that the CC pin is pulled up, so its state changes to Try.SRC -->מצורף.SRC; ומפעיל את VBUS ו-VCONN
(7) The state of DRP#1 changes to AttachWait.SNK -->מצורף.SNK
(8) לאחר שהמקור וה-DRP נמצאים במצב המצורף
DPR#2 (כלומר מקור) מתאים את ערך ה-RP כדי להגביל את הזרם הנקלט ב-DRP#1 (כלומר Sink)
DRP#1 (כלומר Sink) מזהה את המתח vRd על Rd כדי לקבוע את הזרם המותר על ידי VBUS
DRP#2 (כלומר מקור) קובע אם Sink מנותק על ידי ניטור CC. אם כן, הוא נכנס ל-Unattached.SRC ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK
DRP#1 (כלומר Sink) קובע אם המקור מנותק על ידי ניטור מתח VBUS. אם כן, הוא נכנס ל-Unattached.SNK ומשחזר את מנגנון המעבר שלו בין Unattached.SRC ל-Unattached.SNK

המקרה השלישי הוא מנגנון Try.SNK, הדומה למנגנון Try.SRC ולא יתואר כאן.
תרחיש 5 מנגנון התנהגות בין מקור למקור ובין סינק לשקוע
בשני מקרי שימוש אלו, גם Source וגם Sink נמצאים במצב Unattached.SRC ו-Unattached.SNK, כך שאין אספקת חשמל בין המכשירים.
עד כה, הצגנו כמה מנגנוני תקשורת נפוצים בין מכשירים. במיוחד עבור שני התקני DRP דו-תפקידים, בקר Type-C ישתמש ב-Try.SRC או ב-Try.SNK כדי לנסות ליצור לוגיקת אספקת חשמל רגילה. כמובן, אם מתרחשת לוגיקה שגויה של אספקת החשמל (לדוגמה, מחשב נייד טוען בנק חשמל), ה-USB
פרוטוקול PD מספק גם מנגנון Power Role Swap, אשר מחליף את תפקיד אספקת החשמל באמצעות פרוטוקול PD. לפרטים, עיין במפרט אספקת חשמל USB.





