147 |
147 |
148 /** Checks, if the timeout was exceeded. |
148 /** Checks, if the timeout was exceeded. |
149 * |
149 * |
150 * \return non-zero if the timeout was exceeded, else zero. |
150 * \return non-zero if the timeout was exceeded, else zero. |
151 */ |
151 */ |
152 int ec_foe_request_timed_out(const ec_foe_request_t *req /**< FoE request. */) |
152 int ec_foe_request_timed_out( |
|
153 const ec_foe_request_t *req /**< FoE request. */ |
|
154 ) |
153 { |
155 { |
154 return req->issue_timeout |
156 return req->issue_timeout |
155 && jiffies - req->jiffies_start > HZ * req->issue_timeout / 1000; |
157 && jiffies - req->jiffies_start > HZ * req->issue_timeout / 1000; |
156 } |
158 } |
157 |
159 |
158 /*****************************************************************************/ |
160 /*****************************************************************************/ |
159 |
161 |
160 void ec_foe_request_timeout(ec_foe_request_t *req, uint32_t timeout) |
162 /** Set the request timeout. |
|
163 */ |
|
164 void ec_foe_request_timeout( |
|
165 ec_foe_request_t *req, /**< FoE request. */ |
|
166 uint32_t timeout /**< Timeout in ms. */ |
|
167 ) |
161 { |
168 { |
162 req->issue_timeout = timeout; |
169 req->issue_timeout = timeout; |
163 } |
170 } |
164 |
171 |
165 /*****************************************************************************/ |
172 /*****************************************************************************/ |
166 |
173 |
167 uint8_t *ec_foe_request_data(ec_foe_request_t *req) |
174 /** Returns a pointer to the request's data. |
|
175 * |
|
176 * \return Data pointer. |
|
177 */ |
|
178 uint8_t *ec_foe_request_data( |
|
179 ec_foe_request_t *req /**< FoE request. */ |
|
180 ) |
168 { |
181 { |
169 return req->buffer; |
182 return req->buffer; |
170 } |
183 } |
171 |
184 |
172 /*****************************************************************************/ |
185 /*****************************************************************************/ |
173 |
186 |
174 size_t ec_foe_request_data_size(const ec_foe_request_t *req) |
187 /** Returns the data size. |
|
188 * |
|
189 * \return Data size. |
|
190 */ |
|
191 size_t ec_foe_request_data_size( |
|
192 const ec_foe_request_t *req /**< FoE request. */ |
|
193 ) |
175 { |
194 { |
176 return req->data_size; |
195 return req->data_size; |
177 } |
196 } |
178 |
197 |
179 /*****************************************************************************/ |
198 /*****************************************************************************/ |
180 |
199 |
181 void ec_foe_request_read(ec_foe_request_t *req) |
200 /** Prepares a read request (slave to master). |
|
201 */ |
|
202 void ec_foe_request_read( |
|
203 ec_foe_request_t *req /**< FoE request. */ |
|
204 ) |
182 { |
205 { |
183 req->dir = EC_DIR_INPUT; |
206 req->dir = EC_DIR_INPUT; |
184 req->state = EC_INT_REQUEST_QUEUED; |
207 req->state = EC_INT_REQUEST_QUEUED; |
185 req->result = FOE_BUSY; |
208 req->result = FOE_BUSY; |
186 req->jiffies_start = jiffies; |
209 req->jiffies_start = jiffies; |
187 } |
210 } |
188 |
211 |
189 /*****************************************************************************/ |
212 /*****************************************************************************/ |
190 |
213 |
191 void ec_foe_request_write(ec_foe_request_t *req) |
214 /** Prepares a write request (master to slave). |
|
215 */ |
|
216 void ec_foe_request_write( |
|
217 ec_foe_request_t *req /**< FoE request. */ |
|
218 ) |
192 { |
219 { |
193 req->dir = EC_DIR_OUTPUT; |
220 req->dir = EC_DIR_OUTPUT; |
194 req->state = EC_INT_REQUEST_QUEUED; |
221 req->state = EC_INT_REQUEST_QUEUED; |
195 req->result = FOE_BUSY; |
222 req->result = FOE_BUSY; |
196 req->jiffies_start = jiffies; |
223 req->jiffies_start = jiffies; |