forked from Elara6331/itd
		
	Add doc comments to api package
This commit is contained in:
		| @@ -11,8 +11,10 @@ import ( | ||||
| 	"go.arsenm.dev/itd/internal/types" | ||||
| ) | ||||
|  | ||||
| // Default socket address | ||||
| const DefaultAddr = "/tmp/itd/socket" | ||||
|  | ||||
| // Client is the socket API client | ||||
| type Client struct { | ||||
| 	conn          net.Conn | ||||
| 	respCh        chan types.Response | ||||
| @@ -23,6 +25,7 @@ type Client struct { | ||||
| 	dfuProgressCh chan DFUProgress | ||||
| } | ||||
|  | ||||
| // New creates a new client and sets it up | ||||
| func New(addr string) (*Client, error) { | ||||
| 	conn, err := net.Dial("unix", addr) | ||||
| 	if err != nil { | ||||
| @@ -48,6 +51,16 @@ func New(addr string) (*Client, error) { | ||||
| 	return out, err | ||||
| } | ||||
|  | ||||
| func (c *Client) Close() error { | ||||
| 	err := c.conn.Close() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	close(c.respCh) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // request sends a request to itd and waits for and returns the response | ||||
| func (c *Client) request(req types.Request) (types.Response, error) { | ||||
| 	// Encode request into connection | ||||
| 	err := json.NewEncoder(c.conn).Encode(req) | ||||
| @@ -64,6 +77,7 @@ func (c *Client) request(req types.Request) (types.Response, error) { | ||||
| 	return res, nil | ||||
| } | ||||
|  | ||||
| // requestNoRes sends a request to itd and does not wait for the response | ||||
| func (c *Client) requestNoRes(req types.Request) error { | ||||
| 	// Encode request into connection | ||||
| 	err := json.NewEncoder(c.conn).Encode(req) | ||||
| @@ -73,6 +87,7 @@ func (c *Client) requestNoRes(req types.Request) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // handleResp handles the received response as needed | ||||
| func (c *Client) handleResp(res types.Response) error { | ||||
| 	switch res.Type { | ||||
| 	case types.ResTypeWatchHeartRate: | ||||
|   | ||||
							
								
								
									
										14
									
								
								api/info.go
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								api/info.go
									
									
									
									
									
								
							| @@ -6,6 +6,7 @@ import ( | ||||
| 	"go.arsenm.dev/itd/internal/types" | ||||
| ) | ||||
|  | ||||
| // Address gets the bluetooth address of the connected device | ||||
| func (c *Client) Address() (string, error) { | ||||
| 	res, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeBtAddress, | ||||
| @@ -17,6 +18,7 @@ func (c *Client) Address() (string, error) { | ||||
| 	return res.Value.(string), nil | ||||
| } | ||||
|  | ||||
| // Version gets the firmware version of the connected device | ||||
| func (c *Client) Version() (string, error) { | ||||
| 	res, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeFwVersion, | ||||
| @@ -28,6 +30,7 @@ func (c *Client) Version() (string, error) { | ||||
| 	return res.Value.(string), nil | ||||
| } | ||||
|  | ||||
| // BatteryLevel gets the battery level of the connected device | ||||
| func (c *Client) BatteryLevel() (uint8, error) { | ||||
| 	res, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeBattLevel, | ||||
| @@ -39,6 +42,8 @@ func (c *Client) BatteryLevel() (uint8, error) { | ||||
| 	return uint8(res.Value.(float64)), nil | ||||
| } | ||||
|  | ||||
| // WatchBatteryLevel returns a channel which will contain | ||||
| // new battery level values as they update | ||||
| func (c *Client) WatchBatteryLevel() (<-chan uint8, error) { | ||||
| 	c.battLevelCh = make(chan uint8, 2) | ||||
| 	err := c.requestNoRes(types.Request{ | ||||
| @@ -50,6 +55,7 @@ func (c *Client) WatchBatteryLevel() (<-chan uint8, error) { | ||||
| 	return c.battLevelCh, nil | ||||
| } | ||||
|  | ||||
| // HeartRate gets the heart rate from the connected device | ||||
| func (c *Client) HeartRate() (uint8, error) { | ||||
| 	res, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeHeartRate, | ||||
| @@ -61,6 +67,8 @@ func (c *Client) HeartRate() (uint8, error) { | ||||
| 	return uint8(res.Value.(float64)), nil | ||||
| } | ||||
|  | ||||
| // WatchHeartRate returns a channel which will contain | ||||
| // new heart rate values as they update | ||||
| func (c *Client) WatchHeartRate() (<-chan uint8, error) { | ||||
| 	c.heartRateCh = make(chan uint8, 2) | ||||
| 	err := c.requestNoRes(types.Request{ | ||||
| @@ -72,6 +80,7 @@ func (c *Client) WatchHeartRate() (<-chan uint8, error) { | ||||
| 	return c.heartRateCh, nil | ||||
| } | ||||
|  | ||||
| // StepCount gets the step count from the connected device | ||||
| func (c *Client) StepCount() (uint32, error) { | ||||
| 	res, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeStepCount, | ||||
| @@ -83,6 +92,8 @@ func (c *Client) StepCount() (uint32, error) { | ||||
| 	return uint32(res.Value.(float64)), nil | ||||
| } | ||||
|  | ||||
| // WatchStepCount returns a channel which will contain | ||||
| // new step count values as they update | ||||
| func (c *Client) WatchStepCount() (<-chan uint32, error) { | ||||
| 	c.stepCountCh = make(chan uint32, 2) | ||||
| 	err := c.requestNoRes(types.Request{ | ||||
| @@ -94,6 +105,7 @@ func (c *Client) WatchStepCount() (<-chan uint32, error) { | ||||
| 	return c.stepCountCh, nil | ||||
| } | ||||
|  | ||||
| // Motion gets the motion values from the connected device | ||||
| func (c *Client) Motion() (infinitime.MotionValues, error) { | ||||
| 	out := infinitime.MotionValues{} | ||||
| 	res, err := c.request(types.Request{ | ||||
| @@ -109,6 +121,8 @@ func (c *Client) Motion() (infinitime.MotionValues, error) { | ||||
| 	return out, nil | ||||
| } | ||||
|  | ||||
| // WatchMotion returns a channel which will contain | ||||
| // new motion values as they update | ||||
| func (c *Client) WatchMotion() (<-chan infinitime.MotionValues, error) { | ||||
| 	c.motionCh = make(chan infinitime.MotionValues, 2) | ||||
| 	err := c.requestNoRes(types.Request{ | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import ( | ||||
| 	"go.arsenm.dev/itd/internal/types" | ||||
| ) | ||||
|  | ||||
| // SetTime sets the given time on the connected device | ||||
| func (c *Client) SetTime(t time.Time) error { | ||||
| 	_, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeSetTime, | ||||
| @@ -17,6 +18,9 @@ func (c *Client) SetTime(t time.Time) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SetTimeNow sets the time on the connected device to | ||||
| // the current time. This is more accurate than | ||||
| // SetTime(time.Now()) due to RFC3339 formatting | ||||
| func (c *Client) SetTimeNow() error { | ||||
| 	_, err := c.request(types.Request{ | ||||
| 		Type: types.ReqTypeSetTime, | ||||
|   | ||||
| @@ -6,15 +6,19 @@ import ( | ||||
| 	"go.arsenm.dev/itd/internal/types" | ||||
| ) | ||||
|  | ||||
| // DFUProgress stores the progress of a DFU upfate | ||||
| type DFUProgress types.DFUProgress | ||||
|  | ||||
| // UpgradeType indicates the type of upgrade to be performed | ||||
| type UpgradeType uint8 | ||||
|  | ||||
| // Type of DFU upgrade | ||||
| const ( | ||||
| 	UpgradeTypeArchive UpgradeType = iota | ||||
| 	UpgradeTypeFiles | ||||
| ) | ||||
|  | ||||
| // FirmwareUpgrade initiates a DFU update and returns the progress channel | ||||
| func (c *Client) FirmwareUpgrade(upgType UpgradeType, files ...string) (<-chan DFUProgress, error) { | ||||
| 	err := json.NewEncoder(c.conn).Encode(types.Request{ | ||||
| 		Type: types.ReqTypeFwUpgrade, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user