Project

General

Profile

Statistics
| Revision:

root / proj / libs / kbc / include / mouse.h @ 354

History | View | Annotate | Download (4.28 KB)

1 150 up20180655
#ifndef MOUSE_H_INCLUDED
2
#define MOUSE_H_INCLUDED
3
4
/**
5 334 up20180642
 * @defgroup    mouse   mouse
6
 * @ingroup kbc
7
 * @brief   Mouse module.
8
 *
9
 * @{
10
 */
11
12
/**
13 150 up20180655
 * @brief Subscribes Mouse Interrupts and disables Minix Default IH
14
 * @param interrupt_bit Bit of Interrupt Vector that will be set when Mouse Interrupt is pending
15
 * @param interrupt_id Mouse Interrupt ID to specify the Mouse Interrupt in other calls
16
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
17
 * @see {_ERRORS_H_::errors}
18
 */
19
int (subscribe_mouse_interrupt)(uint8_t interrupt_bit, int *interrupt_id);
20
21
//These have to do with mouse_ih
22 339 up20180642
/**
23
 * @brief Get previous mouse interrupt handler call exit code.
24
 * @return  Exit code of previous mouse IH call
25
 */
26 322 up20180642
int (mouse_get_got_error_mouse_ih)(void);
27 339 up20180642
/**
28
 * @brief Get mouse packet.
29
 * @return  Pointer to mouse packet
30
 */
31 322 up20180642
const uint8_t* (mouse_get_packet_mouse_ih)(void);
32 339 up20180642
/**
33
 * @brief Number of mouse bytes received (0 to 3).
34
 * @return  Number of bytes
35
 */
36 322 up20180642
int (mouse_get_counter_mouse_ih)(void);
37 339 up20180642
/**
38
 * @brief Set number of received mouse bytes.
39
 *
40
 * Usually this function is used to reset counter_mouse_ih.
41
 * @param   n   New value of the counter
42
 */
43 323 up20180642
void (mouse_set_counter_mouse_ih)(int n);
44 322 up20180642
45 150 up20180655
/**
46
 * @brief   Parse 3 bytes and returns it as a parsed, struct packet.
47
 * @param   packet_bytes    array of bytes to parse
48 250 up20180655
 * @param   pp              Pointer to packet to store the information.
49 150 up20180655
 */
50 250 up20180655
void (mouse_parse_packet)(const uint8_t *packet_bytes, struct packet *pp);
51 150 up20180655
52
/**
53
 * @brief Polls mouse for data. Blocks execution until a valid mouse packet is obtained.
54
 * @param   pp      pointer to packet struct in which the result will be stored
55
 * @param   period  time (in milliseconds) the poller should wait between pollings of bytes
56
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
57
 */
58
int mouse_poll(struct packet *pp, uint16_t period);
59
60
/**
61
 * @brief Sets data report mode for mouse
62
 * @param   on  zero to disable data report, any other value to enable data report
63
 * @return  ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
64
 */
65
int (mouse_set_data_report)(int on);
66
67
/**
68
 * @brief Reads data byte from mouse
69
 * <summary>
70
 * Polls the mouse till data is available for reading
71
 * </summary>
72
 * @param data Pointer to variable where byte read from mouse will be stored
73 345 up20180642
 * @param   period  Time that the process should wait before polling again, in microseconds
74 150 up20180655
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
75
 * @see {_ERRORS_H_::errors}
76
 */
77
int (mouse_read_data)(uint8_t *data, uint16_t period);
78
79
/**
80
 * @brief Issues command to mouse
81
 * <summary>
82
 * Issues command to mouse, returns error after two consecutive errors reported by the acknowledgment byte
83
 * </summary>
84
 * @param cmd Command to be issued
85
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
86
 * @see {_ERRORS_H_::errors}
87
 */
88 323 up20180642
int (mouse_issue_cmd)(uint8_t cmd);
89 150 up20180655
90
/**
91
 * @brief Reads byte from mouse
92
 * <summary>
93
 * Reads byte from mouse, giving error if exceeds number of tries to read
94
 * </summary>
95
 * @param byte Pointer to variable where byte read from mouse will be stored
96
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
97
 * @see {_ERRORS_H_::errors}
98
 */
99
int (mouse_read_byte)(uint8_t *byte);
100
101
/**
102
 * @brief Polls OUT_BUF for byte coming from mouse.
103
 * @param   byte    pointer to byte read from OUT_BUF
104
 * @param   period  time (in milliseconds) the poller should wait between pollings of bytes
105
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
106
 */
107
int (mouse_poll_byte)(uint8_t *byte, uint16_t period);
108
109
/**
110
 * @brief Converts 9-bit number to 16-bit with sign extension
111
 * @param sign_bit  Sign bit identifiying the signal of the number
112
 * @param byte      Least significant byte that will be extended
113
 * @return Extended 9-bit number
114
 */
115
int16_t (sign_extend_byte)(uint8_t sign_bit, uint8_t byte);
116
117 334 up20180642
/**
118
 * @}
119
 */
120
121 150 up20180655
#endif //MOUSE_H_INCLUDED