Added Navigation service #5
							
								
								
									
										146
									
								
								navigation.go
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								navigation.go
									
									
									
									
									
								
							| @@ -21,8 +21,103 @@ type NavigationCtrl struct { | |||||||
| 	progressChar *gatt.GattCharacteristic1 | 	progressChar *gatt.GattCharacteristic1 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type NavFlag string | ||||||
|  | const ( | ||||||
|  | 	NavFlagArrive                  NavFlag = "arrive" | ||||||
|  | 	NavFlagArriveLeft              NavFlag = "arrive-left" | ||||||
|  | 	NavFlagArriveRight             NavFlag = "arrive-right" | ||||||
|  | 	NavFlagArriveStraight          NavFlag = "arrive-straight" | ||||||
|  | 	NavFlagClose                   NavFlag = "close" | ||||||
|  | 	NavFlagContinue                NavFlag = "continue" | ||||||
|  | 	NavFlagContinueLeft            NavFlag = "continue-left" | ||||||
|  | 	NavFlagContinueRight           NavFlag = "continue-right" | ||||||
|  | 	NavFlagContinueSlightLeft      NavFlag = "continue-slight-left" | ||||||
|  | 	NavFlagContinueSlightRight     NavFlag = "continue-slight-right" | ||||||
|  | 	NavFlagContinueStraight        NavFlag = "continue-straight" | ||||||
|  | 	NavFlagContinueUturn           NavFlag = "continue-uturn" | ||||||
|  | 	NavFlagDepart                  NavFlag = "depart" | ||||||
|  | 	NavFlagDepartLeft              NavFlag = "depart-left" | ||||||
|  | 	NavFlagDepartRight             NavFlag = "depart-right" | ||||||
|  | 	NavFlagDepartStraight          NavFlag = "depart-straight" | ||||||
|  | 	NavFlagEndOfRoadLeft           NavFlag = "end-of-road-left" | ||||||
|  | 	NavFlagEndOfRoadRight          NavFlag = "end-of-road-right" | ||||||
|  | 	NavFlagFerry                   NavFlag = "ferry" | ||||||
|  | 	NavFlagFlag                    NavFlag = "flag" | ||||||
|  | 	NavFlagFork                    NavFlag = "fork" | ||||||
|  | 	NavFlagForkLeft                NavFlag = "fork-left" | ||||||
|  | 	NavFlagForkRight               NavFlag = "fork-right" | ||||||
|  | 	NavFlagForkSlightLeft          NavFlag = "fork-slight-left" | ||||||
|  | 	NavFlagForkSlightRight         NavFlag = "fork-slight-right" | ||||||
|  | 	NavFlagForkStraight            NavFlag = "fork-straight" | ||||||
|  | 	NavFlagInvalid                 NavFlag = "invalid" | ||||||
|  | 	NavFlagInvalidLeft             NavFlag = "invalid-left" | ||||||
|  | 	NavFlagInvalidRight            NavFlag = "invalid-right" | ||||||
|  | 	NavFlagInvalidSlightLeft       NavFlag = "invalid-slight-left" | ||||||
|  | 	NavFlagInvalidSlightRight      NavFlag = "invalid-slight-right" | ||||||
|  | 	NavFlagInvalidStraight         NavFlag = "invalid-straight" | ||||||
|  | 	NavFlagInvalidUturn            NavFlag = "invalid-uturn" | ||||||
|  | 	NavFlagMergeLeft               NavFlag = "merge-left" | ||||||
|  | 	NavFlagMergeRight              NavFlag = "merge-right" | ||||||
|  | 	NavFlagMergeSlightLeft         NavFlag = "merge-slight-left" | ||||||
|  | 	NavFlagMergeSlightRight        NavFlag = "merge-slight-right" | ||||||
|  | 	NavFlagMergeStraight           NavFlag = "merge-straight" | ||||||
|  | 	NavFlagNewNameLeft             NavFlag = "new-name-left" | ||||||
|  | 	NavFlagNewNameRight            NavFlag = "new-name-right" | ||||||
|  | 	NavFlagNewNameSharpLeft        NavFlag = "new-name-sharp-left" | ||||||
|  | 	NavFlagNewNameSharpRight       NavFlag = "new-name-sharp-right" | ||||||
|  | 	NavFlagNewNameSlightLeft       NavFlag = "new-name-slight-left" | ||||||
|  | 	NavFlagNewNameSlightRight      NavFlag = "new-name-slight-right" | ||||||
|  | 	NavFlagNewNameStraight         NavFlag = "new-name-straight" | ||||||
|  | 	NavFlagNotificationLeft        NavFlag = "notification-left" | ||||||
|  | 	NavFlagNotificationRight       NavFlag = "notification-right" | ||||||
|  | 	NavFlagNotificationSharpLeft   NavFlag = "notification-sharp-left" | ||||||
|  | 	NavFlagNotificationSharpRight  NavFlag = "notification-sharp-right" | ||||||
|  | 	NavFlagNotificationSlightLeft  NavFlag = "notification-slight-left" | ||||||
|  | 	NavFlagNotificationSlightRight NavFlag = "notification-slight-right" | ||||||
|  | 	NavFlagNotificationStraight    NavFlag = "notification-straight" | ||||||
|  | 	NavFlagOffRampLeft             NavFlag = "off-ramp-left" | ||||||
|  | 	NavFlagOffRampRight            NavFlag = "off-ramp-right" | ||||||
|  | 	NavFlagOffRampSharpLeft        NavFlag = "off-ramp-sharp-left" | ||||||
|  | 	NavFlagOffRampSharpRight       NavFlag = "off-ramp-sharp-right" | ||||||
|  | 	NavFlagOffRampSlightLeft       NavFlag = "off-ramp-slight-left" | ||||||
|  | 	NavFlagOffRampSlightRight      NavFlag = "off-ramp-slight-right" | ||||||
|  | 	NavFlagOffRampStraight         NavFlag = "off-ramp-straight" | ||||||
|  | 	NavFlagOnRampLeft              NavFlag = "on-ramp-left" | ||||||
|  | 	NavFlagOnRampRight             NavFlag = "on-ramp-right" | ||||||
|  | 	NavFlagOnRampSharpLeft         NavFlag = "on-ramp-sharp-left" | ||||||
|  | 	NavFlagOnRampSharpRight        NavFlag = "on-ramp-sharp-right" | ||||||
|  | 	NavFlagOnRampSlightLeft        NavFlag = "on-ramp-slight-left" | ||||||
|  | 	NavFlagOnRampSlightRight       NavFlag = "on-ramp-slight-right" | ||||||
|  | 	NavFlagOnRampStraight          NavFlag = "on-ramp-straight" | ||||||
|  | 	NavFlagRotary                  NavFlag = "rotary" | ||||||
|  | 	NavFlagRotaryLeft              NavFlag = "rotary-left" | ||||||
|  | 	NavFlagRotaryRight             NavFlag = "rotary-right" | ||||||
|  | 	NavFlagRotarySharpLeft         NavFlag = "rotary-sharp-left" | ||||||
|  | 	NavFlagRotarySharpRight        NavFlag = "rotary-sharp-right" | ||||||
|  | 	NavFlagRotarySlightLeft        NavFlag = "rotary-slight-left" | ||||||
|  | 	NavFlagRotarySlightRight       NavFlag = "rotary-slight-right" | ||||||
|  | 	NavFlagRotaryStraight          NavFlag = "rotary-straight" | ||||||
|  | 	NavFlagRoundabout              NavFlag = "roundabout" | ||||||
|  | 	NavFlagRoundaboutLeft          NavFlag = "roundabout-left" | ||||||
|  | 	NavFlagRoundaboutRight         NavFlag = "roundabout-right" | ||||||
|  | 	NavFlagRoundaboutSharpLeft     NavFlag = "roundabout-sharp-left" | ||||||
|  | 	NavFlagRoundaboutSharpRight    NavFlag = "roundabout-sharp-right" | ||||||
|  | 	NavFlagRoundaboutSlightLeft    NavFlag = "roundabout-slight-left" | ||||||
|  | 	NavFlagRoundaboutSlightRight   NavFlag = "roundabout-slight-right" | ||||||
|  | 	NavFlagRoundaboutStraight      NavFlag = "roundabout-straight" | ||||||
|  | 	NavFlagTurnLeft                NavFlag = "turn-left" | ||||||
|  | 	NavFlagTurnRight               NavFlag = "turn-right" | ||||||
|  | 	NavFlagTurnSharpLeft           NavFlag = "turn-sharp-left" | ||||||
|  | 	NavFlagTurnSharpRight          NavFlag = "turn-sharp-right" | ||||||
|  | 	NavFlagTurnSlightLeft          NavFlag = "turn-slight-left" | ||||||
|  | 	NavFlagTurnSlightRight         NavFlag = "turn-slight-right" | ||||||
|  | 	NavFlagTurnStright             NavFlag = "turn-stright" | ||||||
|  | 	NavFlagUpdown                  NavFlag = "updown" | ||||||
|  | 	NavFlagUturn                   NavFlag = "uturn" | ||||||
|  | ) | ||||||
|  |  | ||||||
| type NavigationEvent struct { | type NavigationEvent struct { | ||||||
| 	flag         string | 	flag         NavFlag | ||||||
| 	narrative    string | 	narrative    string | ||||||
| 	dist         string | 	dist         string | ||||||
| 	progress     uint8 | 	progress     uint8 | ||||||
| @@ -33,58 +128,11 @@ var ( | |||||||
| 	ErrNavInvalidFlag   = errors.New("this flag is invalid") | 	ErrNavInvalidFlag   = errors.New("this flag is invalid") | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var NavFlagNames = []string{ |  | ||||||
| 	"arrive", "arrive-left", "arrive-right", "arrive-straight", |  | ||||||
| 	"close", |  | ||||||
| 	"continue", "continue-left", "continue-right", "continue-slight-left", |  | ||||||
| 	"continue-slight-right", "continue-straight", "continue-uturn", |  | ||||||
| 	"depart", "depart-left", "depart-right", "depart-straight", |  | ||||||
| 	"end-of-road-left", "end-of-road-right", |  | ||||||
| 	"ferry", "flag", |  | ||||||
| 	"fork", "fork-left", "fork-right", "fork-straight", |  | ||||||
| 	"fork-slight-left", "fork-slight-right", |  | ||||||
| 	"invalid", "invalid-left", "invalid-right", |  | ||||||
| 	"invalid-slight-left", "invalid-slight-right", |  | ||||||
| 	"invalid-straight", "invalid-uturn", |  | ||||||
| 	"merge-left", "merge-right", "merge-slight-left", |  | ||||||
| 	"merge-slight-right", "merge-straight", |  | ||||||
| 	"new-name-left", "new-name-right", "new-name-sharp-left", "new-name-sharp-right", |  | ||||||
| 	"new-name-slight-left", "new-name-slight-right", "new-name-straight", |  | ||||||
| 	"notification-left", "notification-right", |  | ||||||
| 	"notification-sharp-left", "notification-sharp-right", |  | ||||||
| 	"notification-slight-left", "notification-slight-right", |  | ||||||
| 	"notification-straight", |  | ||||||
| 	"off-ramp-left", "off-ramp-right", "off-ramp-sharp-left", "off-ramp-sharp-right", |  | ||||||
| 	"off-ramp-slight-left", "off-ramp-slight-right", "off-ramp-straight", |  | ||||||
| 	"on-ramp-left", "on-ramp-right", "on-ramp-sharp-left", "on-ramp-sharp-right", |  | ||||||
| 	"on-ramp-slight-left", "on-ramp-slight-right", "on-ramp-straight", |  | ||||||
| 	"rotary", "rotary-left", "rotary-right", "rotary-sharp-left", "rotary-sharp-right", |  | ||||||
| 	"rotary-slight-left", "rotary-slight-right", "rotary-straight", |  | ||||||
| 	"roundabout", "roundabout-left", "roundabout-right", |  | ||||||
| 	"roundabout-sharp-left", "roundabout-sharp-right", |  | ||||||
| 	"roundabout-slight-left", "roundabout-slight-right", "roundabout-straight", |  | ||||||
| 	"turn-left", "turn-right", "turn-sharp-left", "turn-sharp-right", |  | ||||||
| 	"turn-slight-left", "turn-slight-right", "turn-stright", |  | ||||||
| 	"updown", "uturn", |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func CheckValidNavFlag(flag string) error { |  | ||||||
| 	for _, v := range NavFlagNames { |  | ||||||
| 		if v == flag { |  | ||||||
| 			return nil |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return ErrNavInvalidFlag |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Navigation sends a NavigationEvent to the watch | // Navigation sends a NavigationEvent to the watch | ||||||
| func (i *Device) SetNavigation(flag string, narrative string, dist string, progress uint8) error { | func (i *Device) SetNavigation(flag NavFlag, narrative string, dist string, progress uint8) error { | ||||||
| 	if progress > 100 { | 	if progress > 100 { | ||||||
| 		return ErrNavProgress | 		return ErrNavProgress | ||||||
| 	} | 	} | ||||||
| 	if err := CheckValidNavFlag(flag); err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if flag != i.navigationEv.flag { | 	if flag != i.navigationEv.flag { | ||||||
| 		log.Debug().Str("func", "Navigation"). | 		log.Debug().Str("func", "Navigation"). | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user