Challenge

Project 2 - Design and develop the web based Temperature control system using Beagle Bone Black.

#include <linux/module.h>

#include <linux/i2c.h>

#include <linux/platform_device.h>

#define MCP9808_DEVICE_NAME "mcp9808"

struct mcp9808_data {

struct i2c_client *client;

int temperature;

};

static int mcp9808_probe(struct platform_device *pdev) {

struct i2c_client *client = pdev->dev.platform_data;

struct mcp9808_data *data;

int ret;

data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);

if (!data) {

ret = -ENOMEM;

goto out;

}

data->client = client;

ret = i2c_read(client, &data->temperature, 2);

if (ret < 0) {

dev_err(&pdev->dev, "Failed to read temperature: %dn", ret);

goto out;

}

dev_info(&pdev->dev, "Temperature: %dn", data->temperature);

platform_set_drvdata(pdev, data);

return 0;

out:

devm_kfree(&pdev->dev, data);

return ret;

}

static int mcp9808_remove(struct platform_device *pdev) {

struct mcp9808_data *data = platform_get_drvdata(pdev);

devm_kfree(&pdev->dev, data);

return 0;

}

static struct platform_driver mcp9808_driver = {

.driver = {

.name = MCP9808_DEVICE_NAME,

},

.probe = mcp9808_probe,

.remove = mcp9808_remove,

};

module_platform_driver(mcp9808_driver);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("Bard

");

MODULE_DESCRIPTION("MCP9808 Temperature Sensor Driver");

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.